Zabbix踩坑记录3--Trigger中的time函数坑

问题描述

由于功能需求,需要限制trigger的报警时间,所以加了如下的报警限制

1
and (time()>010000 and time()<045959)

但是事与愿违,报警的时间总是对不上
图片
但是,Zabbix设置的时区就是北京时间,应该是没有问题的

问题研究

根据报警的时间,与预期时间相对比,发现总是差了8个小时,所以怀疑是不是哪里的时区设置不正确,采用排除法,最终确定是服务器本身设置的时区在UTC导致

解决方案

需要修改服务器对应的时区

查看当前时区

1
2
3
4
5
6
timedatectl

Local time: Wed 2023-10-25 12:34:56 UTC
Universal time: Wed 2023-10-25 12:34:56 UTC
RTC time: Wed 2023-10-25 12:34:56
Time zone: UTC (UTC, +0000)

列出所有的时区

1
timedatectl list-timezones |grep Asia

设置时区

1
sudo timedatectl set-timezone <时区名称>

验证时区是否修改成功

1
timedatectl

总结

根据这个解决方案可以看出,zabbix的time()函数应该是直接调用了服务器的time命令,因此,跟Zabbix这个服务无关,我们需要针对运行服务器做针对性修改