Zabbix-Trigger中的time函数坑

问题描述

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

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

但是事与愿违,报警的时间总是对不上
Zabbix-Trigger中的time函数坑_第1张图片
但是,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这个服务无关,我们需要针对运行服务器做针对性修改

你可能感兴趣的:(运维茶馆,zabbix,运维,监控,linux)