应用zabbix的实时导出(real-time export)功能

说明

zabbix作为监控软件,有时也会需要获取历史数据作进一步的分析,通常可以采用3种办法:

  1. 通过zabbix API定期获取(通过web)
  2. 通过后端数据库定期读取(通过db)
  3. 应用实时导出功能配合filebeat或其他工具获取(通过server)

对比以上三种方法:

  1. 实时性:毫无疑问,通过实时导出功能将数据发送出去是实时性最好的,周期性调用API或者读取数据库都存在一定的延时。
  2. 暴露面:通过API暴露数据是最合理的,因为web服务本身就是对外的;数据库一般情况下不应该对外暴露,甚至不需要公网地址;而server则需要分情况讨论,如果涉及外网proxy或者agent,则也需要有公网地址,而如果仅仅作内网的监控,则不需要具备公网地址。
  3. 安全性:通过实时导出主动发送数据是安全性最好的,因为不存在任何的入访机会;而使用API或者读取数据都必须要开放入访和提供密码或者token,需要通过做白名单、管控账号权限来保证安全性。

本文将介绍第三种方法,将历史数据导出为文件,以备其他工具处理。

配置

修改配置文件

如果zabbix部署方式为编译或者rpm,则修改zabbix_server.conf配置文件,注意3个字段的配置:

  1. ExportDir: 导出文件的目录,注意此目录一定要有写权限,会以history syncer进程的数量创建文件
  2. ExportFileSize: 限制导出文件的大小,默认是1G,如果文件超出,则以 .old 结尾重命名该文件,并创建一个和原名称相同的新文件
  3. ExportType: 导出数据的类型,包括events、history、trends,如果不设置,则默认为全部

示例如下:

复制代码
ExportDir:/zabbix/history/
ExportFileSize:500M
ExportType:history,trends

配置完成后重启zabbix_server生效。

修改docker容器环境变量

如果zabbix部署方式为容器,则需要配置环境变量,相关的2个环境变量为:ZBX_EXPORTFILESIZEZBX_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文件。

相关推荐
何以不说话4 天前
zabbix部署及nginx的监控
运维·nginx·zabbix
成为你的宁宁5 天前
【Zabbix + 睿象云实现电话告警(附图文教程):从监控项与触发器配置到睿象云电话报警通道部署全流程】
zabbix·电话报警
成为你的宁宁5 天前
【Zabbix 监控 Redis 实战教程(附图文教程):从 Zabbix-Server 部署、Agent2 安装配置到自带监控模板应用全流程】
数据库·redis·zabbix
释怀不想释怀11 天前
Zabbix框架(含相关的面试题)
zabbix
释怀不想释怀11 天前
Zabbix(安装模式)
运维·云原生·zabbix
何以不说话11 天前
记录一下学习日常⑨(ansible、Open-V、zabbix)
学习·ansible·zabbix
成为你的宁宁12 天前
【Zabbix运维监控实战(附图文教程):Nginx 服务可用性、连接请求状态、CPU 内存占用与 JVM(Jar 包 / Tomcat)全维度监控】
运维·jvm·nginx·zabbix
释怀不想释怀12 天前
Zabbix入门介绍和与BMC比较(面试回答)
zabbix
成为你的宁宁17 天前
【Zabbix 自动发现全流程实战指南:从规则配置到动作触发(附大量图文教程,零基础快速上手)】
zabbix
成为你的宁宁17 天前
【Zabbix 分布式监控实战指南(附图文教程):Server/Proxy/Agent 三者关系解析 + Proxy 部署、Agent 接入及取数路径验证】
分布式·zabbix