问题描述
由于功能需求,需要限制trigger的报警时间,所以加了如下的报警限制
and (time()>010000 and time()<045959)
但是事与愿违,报警的时间总是对不上
但是,Zabbix设置的时区就是北京时间,应该是没有问题的
问题研究
根据报警的时间,与预期时间相对比,发现总是差了8个小时,所以怀疑是不是哪里的时区设置不正确,采用排除法,最终确定是服务器本身设置的时区在UTC导致
解决方案
需要修改服务器对应的时区
查看当前时区
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)
列出所有的时区
timedatectl list-timezones |grep Asia
设置时区
sudo timedatectl set-timezone <时区名称>
验证时区是否修改成功
timedatectl
总结
根据这个解决方案可以看出,zabbix的time()函数应该是直接调用了服务器的time命令,因此,跟Zabbix这个服务无关,我们需要针对运行服务器做针对性修改