zabbix作为监控软件,有时也会需要获取历史数据作进一步的分析,通常可以采用3种办法:
对比以上三种方法:
本文将介绍第三种方法,将历史数据导出为文件,以备其他工具处理。
如果zabbix部署方式为编译或者rpm,则修改zabbix_server.conf配置文件,注意3个字段的配置:
示例如下:
ExportDir:/zabbix/history/
ExportFileSize:500M
ExportType:history,trends
配置完成后重启zabbix_server生效。
如果zabbix部署方式为容器,则需要配置环境变量,相关的2个环境变量为:ZBX_EXPORTFILESIZE
、ZBX_EXPORTTYPE
,目录变量无法修改,因为固定位于容器内的/var/lib/zabbix/export/
目录下
为对历史数据文件进行读取,需要做一个卷映射,将容器内的文件映射到宿主机上
示例如下:
……
-e ZBX_EXPORTFILESIZE="500M" -e ZBX_EXPORTTYPE="history" \
……
-v /zabbix/history:/var/lib/zabbix/export \
以此配置创建容器
完成配置并启动后,会在设定的目录下(本例中为/zabbix/history/)生成名为history-history-syncer-*.ndjson(本例中只保存了history数据)的一批文件,数量对应history syncer进程,例如有10个进程,则会生成名为syncer-[1-10]的ndjson文件。
文件格式示例为:
{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"Application","value":"system"}],"itemid":3,"name":"Agent availability","clock":1519304285,"ns":123456789,"value":1,"type":3}
可以通过filebeat之类工具进行数据的实时处理。
如果监控项很多,数据的增长速度可能会比较快,本实验环境中监控项有17万,所有历史数据文件大小总和以7-10M/分钟的速度增长。如果硬盘空间没有预留足够,可能不出几天就会被写满。首先可以增加数据盘,以保留更久的数据,然而不管硬盘多大,时间久了总归还是会写满的,可以设置一个crontab的脚本,每隔一段时间去删除.old文件。
示例如下:
0 * * * * /bin/bash -c 'find /zabbix/history -type f -name "history-history-syncer-*.ndjson.old" -exec rm {} \;'
每小时进行一次检查,删除/zabbix/history目录下的history-history-syncer-*.ndjson.old文件。