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