将RingServer中的日志导出为infloxDB时间序列
ringserverstats的Python项目详细描述
RingServerStats
分析ringserver报告,计算统计数据并存储在infloxdb中。
安装
RingServerStats作为一个通用轮分布在Pypihttps://pypi.org上。
$ pip install ringserverstats
infloxDB配置
这个程序将填充2个测量值。您应该为这些配置一个数据库,并为用户配置写权限。
准备数据库
首先,创建数据库、用户和保留策略。
createdatabaseringserverdbcreateuserringserverwithpassword'ringserverer'grantwriteonringserverdbtoringservergrantreadonringserverdbtoringservercreateretentionpolicyrp_ringservereventsonringserverduration1wreplication1createretentionpolicyrp_ringserverstatsonringserverduration520wreplication1
用法
要正常工作,此程序需要设置以下环境变量:
INFLUXDB_HOST
:infloxdb服务器的主机名或地址INFLUXDB_PORT
:infloxdb服务器的端口号INFLUXDB_USER
:要向其进行身份验证的infloxdb用户INFLUXDB_PASS
:要验证的密码INFLUXDB_DB
:包含度量的数据库名称INFLUXDB_VERIFY_SSL
:设置为yes
或no
以验证ssl连接INFLUXDB_SSL
:连接应该转到https吗?
$ ringserstats txlogs.log
解释
来自ringserver的tx日志是适合时间序列数据库的度量。其思想是解析日志,如下面的示例所示,并生成值以插入infloxdb timeseries数据库。
可以将文件grafana-dashboard.json
导入grafana以可视化此时间序列。
infloxDB中使用的标记:
showtagkeysfromringservereventsshowtagkeysfromringserverstats
事件
RingServerEvents度量值有几个标记:
- 网络、电台、位置、频道:请求了哪些数据
- geohash:geohash格式的客户端位置
- hosthash:客户端IP的哈希(用于关联客户端请求)
- 城市:英文城市名
分组和下采样
由于长期存储事件的相关性不大,ringserverstats
度量按天、按主机、按网络、站点、位置和通道对所有事件进行分组。
上面描述的保留策略将管理数据存储在infloxdb中的时间。
为了实现下采样,我们使用infloxdb的连续查询。这是创建连续查询的示例:
createcontinuousquery"cq_ringserverstats_by_day"onresifresamplefor3dbeginselectsum("bytes")asbytesinto"rp_ringserverstats"."ringserverstats"from"rp_ringserverevents"."ringserverevents"groupbytime(1d),network,station,location,channel,city,hosthash,geohashend
此查询每天(从group by time(1d)
指令)执行,并将在过去的3天(指令resample for 3 d
)重新采样,生成3个条目(每天一个)。已覆盖现有条目。
infloxdb连续查询的文档如下:https://docs.influxdata.com/influxdb/v1.7/query_language/continuous_queries/
许可证
ringserverstats
根据gpl v3或更高版本的条款分发。请参阅许可证文件。
构建
python3 setup.py sdist bdist_wheel
测试
tox