Skip to main content

1. 说明

需求背景:滨州医学院某台Windows设备由于时间同步问题经常产生误告警 1.10. 客户端与server端或proxy端时间差监控 操作截图 1
通过监控客户端(agent端)与server端的时间差可快速排查出相关问题,当客户端与server端时间相差过大时,将会产生误告警(主动式无法采集到数据)
本方法监控需被控端需要安装agent,监控原理如下
由server或者proxy发起zabbix_get请求,请求 “system.localtime” (系统本地时间)监控项,获取系统本地时间,获取的时间为时间戳格式,在将返回的时间戳数据与本地时间戳数据进行对比

2. 代码

本脚本由go语言编写,源码如下
附件中go结尾的文件为源文件,需要依赖go开发环境
TimeDiff为编译后的二进制文件,二进制文件不可编辑,可直接执行查看结果,如需调整,需调整源码,而后编译保存
测试执行命令为 ./TimeDiff HostIP Agent端口 serverIP
1.10. 客户端与server端或proxy端时间差监控 操作截图 2

3.监控、监控项、触发器

3.1监控

将二进制文件放置于Server或Proxy的脚本目录:/itops/zabbix/scripts/
1.10. 客户端与server端或proxy端时间差监控 操作截图 3
测试效果如下:
1.10. 客户端与server端或proxy端时间差监控 操作截图 4
外部检查键值创建,目录:/itops/zabbix/share/zabbix/externalscripts
创建文件TimeDiff
1.10. 客户端与server端或proxy端时间差监控 操作截图 5

3.2监控项

创建模板,模板名称、可见名称、群组根据需求进行填写
1.10. 客户端与server端或proxy端时间差监控 操作截图 6
创建相关宏变量
1.10. 客户端与server端或proxy端时间差监控 操作截图 7
监控像类型:外部监查
键值:TimeDiff[{HOST.IP},{HOST.PORT},{$SERVERIP}]
单位:s
1.10. 客户端与server端或proxy端时间差监控 操作截图 8
模板链接到主机进行测试
链接模板
1.10. 客户端与server端或proxy端时间差监控 操作截图 9
更新宏值
1.10. 客户端与server端或proxy端时间差监控 操作截图 10
返回数据
1.10. 客户端与server端或proxy端时间差监控 操作截图 11

3.3创建触发器

触发器函数选择:abs()
1.10. 客户端与server端或proxy端时间差监控 操作截图 12
新增依赖关系
1.10. 客户端与server端或proxy端时间差监控 操作截图 13
告警效果
1.10. 客户端与server端或proxy端时间差监控 操作截图 14