Zabbix 监控 Web探测如何设置定时触发器 ?
目标
需求 : 实现一个触发器,当 Web 探测连续失败 3 次时,仅在每天 21:00 ~ 21:30 时间段内触发报警,其他时间不触发。
Zabbix 限制说明
-
• Zabbix 5.0 不支持在触发器表达式中直接使用 time()函数。(zabbix >5.0 版本 ,触发器可以直接使用 time()函数) -
• 需要通过创建一个自定义 item 获取当前时间,并在触发器表达式中使用该 item 实现时间判断。
方案一:zabbix开启远程执行命令功能
步骤一:创建获取当前时间的 Item
➤ 登录 Zabbix 前端
-
• 进入主机: HOSTNAME -
• 选择「Items」标签页
➤ 添加 Item 配置如下:
|
|
|
| Name |
|
| Type |
|
| Key | system.run[date +%H%M%S] |
| Type of Info |
|
| Update Interval | 60 |
| History Storage |
7d
|
| Applications |
|
🔒 注意:
确保 Zabbix agent 配置文件中开启以下设置:
EnableRemoteCommands=1
UnsafeUserParameters=1
编辑配置文件(例如 /etc/zabbix/zabbix_agentd.conf),修改并重启 agent:
sudo systemctl restart zabbix-agent
🛠️ 步骤二:改造 Web 探测触发器
➤ 原始触发器表达式:
{HOSTNAME:web.test.fail[http://192.168.2.76:8072/check.html].count(#3,1,eq)}=3
➤ 改造后表达式:
({HOSTNAME:web.test.fail[http://192.168.2.76:8072/check.html].count(#3,1,eq)}=3)
and
({HOSTNAME:system.run[date +%H%M%S].last()}>=210000 and {HOSTNAME:system.run[date +%H%M%S].last()}<=213000)
➤ 添加触发器操作:
-
1. 进入主机: HOSTNAME -
2. 点击「Triggers」→「Create trigger」 -
3. 填写字段:
|
|
|
| Name |
|
| Severity |
|
| Expression |
|
| OK Event Gen. |
|
| Dependencies |
|
✅ 验证与测试建议
✔ 检查当前时间 item 是否正常工作:
在「Latest data」中搜索:
-
• system.run[date +%H%M%S]是否定期更新,格式如210503
✔ 调整时间验证:
-
• 临时把表达式时间段设成当前时间附近,例如 time >= 150000 and <= 160000,以快速测试触发逻辑。
方案二:可选优化方案(安全性)
若不希望启用 system.run,可使用 external script:
1、创建脚本
/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/current_time.sh
#!/bin/bash
date +%H%M%S
2、赋予权限:
chmod +x /usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/current_time.sh
3、配置自定监控项:
UserParameter=current.time,/usr/local/zabbix/etc/zabbix_agentd.conf.d/scripts/current_time.sh
4、在 Item 中配置:
5、触发器
({HOSTNAME:web.test.fail[http://192.168.2.76:8072/check.html].count(#3,1,eq)}=3) and ({HOSTNAME:current.time.last()}>="210000" and {HOSTNAME:current.time.last()}<="213000")
总结
|
|
|
|
|
time() 函数
|
|
|
|
system.run[date +%H%M%S] Item
|
|
|
|
|
|
|
|
|

