资源目录数据上报¶
资源目录数据上报需要先安装并连通 DataKit 和 DataFlux Func,再通过 DataFlux Func 上报数据到 DataKit,最终 DataKit 上报数据到观测云工作空间。
安装 DataKit¶
在到观测云工作空间,依次点击集成 > DataKit,选择 DataKit 安装方式,见如下信息,然后复制安装指令在主机执行。
打开命令行终端工具,登录到主机,执行复制的安装指令,安装完成后会提示 Install Success
。
安装 DataFlux Func¶
在观测云工作空间,依次点击集成 > 扩展,根据如下步骤在命令行终端工具进行安装 Func。
1、下载携带版;
2、自动部署脚本安装;
3、安装完成后,可在浏览器输入 http://服务器IP地址:8088
,点击保存并初始化数据库进行初始化。
更多 Func 安装,可参考快速开始。
连接 DataFlux Func 和 DataKit¶
在使用 DataFlux Func 向 DataKit 写入数据之前,首先要确保连通性。因此,在 DataKit 安装完成后,需要调整配置,允许 DataFlux Func 连接。
1、打开 DataKit 配置:sudo vim /usr/local/datakit/conf.d/datakit.conf
;
2、将 http_listen = "localhost:9529"
修改为 http_listen = "0.0.0.0:9529"
;
3、重启 DataKit;
更多详情,可参考连接并操作 DataKit。
上报资源目录数据¶
DataFlux Func 和 DataKit 连通以后,可以在 DataFlux Func 中撰写函数来完成上报资源目录数据。
关于 DataFlux Func 函数调用的接口说明,可参考 DataKit API;
关于 DataFlux Func 如何写入数据到 DataKit 的说明,可参考通过 DataKit 写入数据。
示例说明¶
下面的示例主要以阿里云产品为例,说明如何通过 DataFlux Func 上报资源目录数据。
前提条件:已经完成 DataKit 和 DataFlux Func 安装及连通。
1、在浏览器输入 http://服务器IP地址:8088
,输入账号和密码,可在初始化时配置,默认为 admin/admin
。
2、登录到 DataFlux Func 以后就可以在脚本编辑器添加脚本。
3、DataFlux Func 支持通过 Python 撰写脚本上报数据。在开始添加脚本之前,需要先安装阿里云的 Python SDK。
1)在 DataFlux Func 管理 > 实验性功能 > 开启 PIP 工具模块。
2)在PIP 工具模块,点击打开 阿里云的 Python SDK 的网址,复制 aliyun-python-sdk-core
进行安装。
4、安装完阿里云的Python SDK以后,点击进入脚本编辑器 > 添加脚本集。
根据 DataKit API 文档获取上报 API 接口和撰写上报数据到 DataFlux 的脚本,根据 阿里云 API 文档撰写获取阿里云产品基本信息的字段。
脚本写完以后,可以点击右上角的执行,查看是否可以正常执行代码。
脚本代码参考如下,可以按照上图中的提示替换相关内容。
from aliyunsdkcore.request import CommonRequest
from aliyunsdkcore.client import AcsClient
import requests
import json
import time
#推送数据到DF
def pushdata(data):
params = (
('token', 'tokn_bW47smmgQpoZxxxxxxx'),
)
response = requests.post('http://服务器IP地址:9529/v1/write/custom_object', params=params, data=data)
print(response.status_code, response.text)
#主函数
@DFF.API('custom_object')
def main():
# 1.初始化SDK
client = AcsClient(
'LTAI5t6d3sRh3xxxxxxxx', # your-access-key-id
'CHdrce2XtMyDAnYJxxxxxxxxxxxxxx', # your-access-key-secret
'cn-qingdao', # your-region-id
)
request = CommonRequest()
request.set_accept_format('json')
request.set_domain('ecs.aliyuncs.com')
request.set_method('POST')
request.set_version('2014-05-26')
request.set_action_name('DescribeInstances')
request.add_query_param('RegionId', 'cn-qingdao')
response = json.loads(client.do_action_with_exception(request))
for i in response["Instances"]["Instance"]:
data = ''' aliyun_ecs,name=%s,host=%s instanceid="%s",os="%s",status="%s",creat_time="%s",publicip="%s",regionid="%s",privateip="%s",cpu=%s,memory=%s %s''' %(
i['HostName'],
i['InstanceId'],
i['InstanceId'],
i['OSType'],
i['Status'],
i['CreationTime'],
i['PublicIpAddress']['IpAddress'],
i['RegionId'],
i['NetworkInterfaces']['NetworkInterface'][0]['PrivateIpSets']['PrivateIpSet'][0]['PrivateIpAddress'],
i['Cpu'],
i['Memory'],
int(time.time()))
print(data)
pushdata(data)
5、DataFlux Func 脚本配置完成执行后,即可在观测云工作空间基础设施 > 自定义中查看上报的数据。
6、若需要定时执行脚本任务,可在 DataFlux Func > 管理 > 自动触发配置创建定时上报任务。