电子说
这个变频器是怎么样一个概念呢?
我们知道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缩短了告警器触发时间
全部0条评论
快来发表一下你的评论吧 !