ATN ATN DBOT度量包
dbot-metrics的Python项目详细描述
dbot服务器指标
dbot服务器的metrics客户端。
它支持收集和传输每个dbot服务器的度量。
- 目前我们有一些内部输出插件,更多的,你可以定义你自己的输出插件。
- 输出插件可以同时工作,但我们建议只有一个。
- 输入度量插件也可以自己定义。
- 只需要实现插件接口并配置文件
collector.conf
。
安装
pip install dbot_metrics
如果使用系统中的默认collector.conf文件,则应将其复制到/etc
依赖关系
如果要使用建议的输出插件leveldb client,请安装leveldb
pip install leveldb
如果要使用内部输出插件infloxdb client,请先安装infloxdb python。
$ sudo apt-get install python-influxdb
获取更多信息,请参见https://github.com/influxdata/influxdb-python。
如果要使用内部输出插件tinydb client,请安装tinydb。
pip install tinydb
如果要使用输出插件unqlite client,请安装unqlite
pip install unqlite
文档
见https://github.com/ATNIO/AI_market_plan/wiki/metric-heartbeat。
接口
metrics支持查询接口,它接收一个json类型的请求参数,如下所示:
{ 'range': { 'from': 1532023625, 'to': 1532025313 },
'targets': [{'table':'student', 'type':'all', 'sentence':''},
{'table':'teacher', 'type':'sql', 'sentence': 'select * from teacher'},
{'table':'others', 'type':'columns', 'sentence': 'age|name|no'}]}
响应格式如下:
[ {
'name': 'influxdb',
'content':[ {
'time':1532023688,
'tags':{'name':'John', 'No':10023},
'fields': {'age': 23, 'gender': 'male'}
},
{
'time':1532023798,
'tags':{'name':'Tom', 'No':10024},
'fields': {'age': 25, 'gender': 'male'}
}
]
}
]
示例
from dbot_metrics import DBotMetricsCollector
# DBotApiMetric is a special metric in dbot_service_metric defined by yourself
from dbot_service_metric import DBotApiMetric
DBotMetricsCollector().Start("./collector.conf")
m = DBotApiMetric()
DBotMetricsCollector().RegisterMetrics(m)
m.EnableDetailRecord(False)
apiinfo = m.CallBegin("/api/dbot_server/api_call_test", "user")
# ... ... processing
m.CallEnd(apiinfo, 0)
DBotMetricsCollector().Stop()