ZabbixWeb监控变频器

前言

观看2018年Zabbix大会有大佬用脚本实现变频器概念功能

这个变频器是怎么样一个概念呢?

我们知道Zabbix里每次监控间隔时间都是固定的,变频器所做的事情就是改变监控频率

变频器有什么好处?
在某些场景,我们会担心因网络抖动引起的误报,有些告警阈值是两次出现问题才触发。这样的配置有个缺点:问题发现时间是监控频率 x 2,变频器所做的事情就是:第一次发现阈值有问题,手动触发一次,并将结果存库,这样问题发现时间是监控频率 + 数据采集时间,极大缩短了问题发现时间。

方案

听完这个有趣的监控思路,自己也想尝试一番。
想在监控站点可用性上加快故障发现时间,普通的监控项变频器可以采用zabbix_getzabbix_sender配合使用,实现变频器功能;但经过一番测试,ZabbixWeb是特殊类型,需要采用其他方案。

经过一番简单的思考,大致方案如下

  • 需要额外开发一个仿ZabbixWebMonitor的脚本.
  • 传入itemid,捞取数据库相关信息进行请求.
  • 请求完将相关数据直接存库.

实现

初步思考方案是简单而美好的,但是在后续实践过程中碰到一些问题

  1. 存入数据库,Trigger不生效问题

    还是太过年轻了,查了官网发现:ZabbixServer Trigger读内存缓存值而非直接读取数据库 .

  2. 数据库插值行不通,如何插入WebMonitor

    抓包分析zabbix_sender主动传值,发现tcp协议request只支持agent datatrapper data ,分别对应主动模式的item与自动捕获数据的item,WebMonitor是属于特殊item,无法直接插入值.

经过几番测试跟思考,最终方案如下:

#1     每个Web额外添加一个Trapper类型item.
#2     原先触发器进行改造,改为判断两项的总和.

效果

原来的Trigger

最后三次中加起来超过两次异常触发告警
ZabbixWeb监控变频器

看最新数据11分40秒第一次发现故障
ZabbixWeb监控变频器
在12分41秒的时候发出告警,也就是从故障发生到发现时间经过了1分多钟时间
ZabbixWeb监控变频器

加入变频器后

Trigger改造
ZabbixWeb监控变频器
可以看到在第一次发现故障后4秒就触发了告警器
ZabbixWeb监控变频器

47秒发现故障,51秒将请求结果插入库,以及发送到Zabbix trapper缩短了告警器触发时间
ZabbixWeb监控变频器

后记

这种监控思路蛮有趣的,可以用在某些特定应用场景

脚本地址: 传送门