1. 说明
需求背景:滨州医学院某台Windows设备由于时间同步问题经常产生误告警
通过监控客户端(agent端)与server端的时间差可快速排查出相关问题,当客户端与server端时间相差过大时,将会产生误告警(主动式无法采集到数据)
本方法监控需被控端需要安装agent,监控原理如下
由server或者proxy发起zabbix_get请求,请求 “system.localtime” (系统本地时间)监控项,获取系统本地时间,获取的时间为时间戳格式,在将返回的时间戳数据与本地时间戳数据进行对比
2. 代码
本脚本由go语言编写,源码如下TimeDiff为编译后的二进制文件,二进制文件不可编辑,可直接执行查看结果,如需调整,需调整源码,而后编译保存
测试执行命令为 ./TimeDiff HostIP Agent端口 serverIP
3.监控、监控项、触发器
3.1监控
将二进制文件放置于Server或Proxy的脚本目录:/itops/zabbix/scripts/
测试效果如下:

外部检查键值创建,目录:/itops/zabbix/share/zabbix/externalscripts
创建文件TimeDiff
3.2监控项
创建模板,模板名称、可见名称、群组根据需求进行填写
创建相关宏变量

监控像类型:外部监查
键值:TimeDiff[{HOST.IP},{HOST.PORT},{$SERVERIP}]
单位:s

模板链接到主机进行测试
链接模板

更新宏值

返回数据
3.3创建触发器
触发器函数选择:abs()
新增依赖关系

告警效果

