ZabbixWeb监控变频器
前言
观看2018年Zabbix大会有大佬用脚本实现
变频器
概念功能
这个变频器是怎么样一个概念呢?
我们知道Zabbix里每次监控间隔时间都是固定的,变频器所做的事情就是改变监控频率
。
变频器有什么好处?
在某些场景,我们会担心因网络抖动引起的误报,有些告警阈值是两次出现问题才触发。这样的配置有个缺点:问题发现时间是监控频率 x 2
,变频器所做的事情就是:第一次发现阈值有问题,手动触发一次,并将结果存库,这样问题发现时间是监控频率 + 数据采集时间
,极大缩短了问题发现时间。
方案
听完这个有趣的监控思路,自己也想尝试一番。
想在监控站点可用性上加快故障发现时间,普通的监控项变频器可以采用zabbix_get
与zabbix_sender
配合使用,实现变频器功能;但经过一番测试,ZabbixWeb是特殊类型,需要采用其他方案。
经过一番简单的思考,大致方案如下
- 需要额外开发一个仿
ZabbixWebMonitor
的脚本. - 传入
itemid
,捞取数据库相关信息进行请求. - 请求完将相关数据直接存库.
实现
初步思考方案是简单而美好的,但是在后续实践过程中碰到一些问题
- 存入数据库,Trigger不生效问题
还是太过年轻了,查了官网发现:ZabbixServer Trigger读内存缓存值
而非直接读取数据库
. - 数据库插值行不通,如何插入
WebMonitor
值
抓包分析zabbix_sender主动传值,发现tcp协议request只支持
agent data
跟trapper data
,分别对应主动模式的item与自动捕获数据的item,WebMonitor是属于特殊item,无法直接插入值.
经过几番测试跟思考,最终方案如下:
#1 每个Web额外添加一个Trapper类型item.
#2 原先触发器进行改造,改为判断两项的总和.
效果
原来的Trigger
最后三次中加起来超过两次异常触发告警
看最新数据11分40秒第一次发现故障
在12分41秒的时候发出告警,也就是从故障发生到发现时间经过了1分多钟时间
加入变频器后
Trigger改造
可以看到在第一次发现故障后4秒就触发了告警器
47秒发现故障,51秒将请求结果插入库,以及发送到Zabbix trapper缩短了告警器触发时间
后记
这种监控思路蛮有趣的,可以用在某些特定应用场景
脚本地址: 传送门
原文地址:http://blog.51cto.com/maoyao/2325584