Zabbix监控ogg延迟情况
起因
最近ogg出现了一点问题,没有及时发现,于是考虑将ogg的监控也纳入zabbix当中来。对于这一类监控,考虑的地方不单单在于如何监控,而是善用zabbix的模板、自动发现等功能来实现,这样会方便配置以及后期的可扩展性。
获取OGG信息
首先对ogg的运行情况查看通常是通过info all命令
1 | MANAGER RUNNING |
这里总共有19个抽取、传输进程,根据实际需求只需要做到分钟级别监控即可,所以筛选出4列,分别为运行状态、进程名、lag时间、time列
1 | echo "info all"|ggsci|egrep 'EXTRACT|REPLICAT'|awk -F"[ ]+|:" '{print $2,$3,$4*60+$5,$7*60+$8}' |
通过shell将获取到的数据写入临时文件/etc/zabbix/scripts/ogg.cfg
。
1 |
|
转换成zabbix可识别的Json格式
为了满足zabbix自动发现的要求,返回值必须要是json格式,所以可以对上面的数据进行格式化
1 | #!/usr/bin/env python |
最后得到的数据
获取所有信息:
1 | [root@ scripts]# ./ogg_delay.py |
只获取名称信息:
1 | [root@ scripts]# ./ogg_delay.py query_name |
创建模版
数据都已经获取到,到这里脚本就准备完毕,需要添加两个自定义key
1 | UserParameter=ogg.discovery,/etc/zabbix/scripts/ogg.py |
在实现方式上,为了提高效率,采用dependent item+预处理的方式来进行,这样就避免每个监控项频繁的去处理文本,只用一次处理得到所有结果。
新建监控项获取所有的ogg信息,调用自定义监控项
ogg.discovery
新建自动发现规则获取所有的ogg名称信息,调用自定义监控项
ogg_name
新增3个监控项,分别对第1步得到的数据进行处理,通过预处理中的jsonpath解析直接得到结果。
1
2
3状态:$[?(@.NAME=='{#NAME}')].STATUS.first()
应用延迟:$[?(@.NAME=='{#NAME}')].LAG.first()
传输延迟:$[?(@.NAME=='{#NAME}')].TIME.first()
在zabbix上新建模板,配置宏参数以及新增监控项和触发器等,最后只需要将模板添加到对应监控的主机即可
Zabbix监控ogg延迟情况
https://www.xbdba.com/2020/07/09/zabbix-monitor-ogg-delay/