我有以下措施来防止代理连接抖动(在标记为 OK 之前,它必须稳定 20 分钟)。
在更正Zabbix Trigger Hysteresis - Incorrect trigger expression的语法后,我有以下内容:
({TRIGGER.VALUE}=0 and {Template App Zabbix Agent:agent.ping.nodata(5m)}=1) or ({TRIGGER.VALUE}=1 and {Template App Zabbix Agent:agent.ping.min(20m)}=1)
虽然它最初在没有数据时触发,但它永远不会恢复。我目前正在使用 v3.0.9,所以现在尝试使用上述内容。
我在targets下查看了最新的agent数据,可以看到agent ping确实是1
20多分钟。
请问我做错了什么?
我做了一些实验:
agent.ping 如果可达则写入“1”值,如果不可达则不写入任何内容;因此,即使您的代理在 2 小时内无法访问,最后一个值为 1。这意味着 .min()、.avg() 等...始终适用于“1”值列表。
.nodata() 函数也无助于反弹:仅当它在整个时间间隔内没有收到任何数据时才返回“1”,否则返回“0”。
例如, 60 秒项目上的 .nodata(20m) 将返回:
我找到了解决方法,假设您每 60 秒检查一次代理可达性:
该表达式将在 5 分钟不可达后触发,并且仅当您在过去 20 分钟内有 20 个“1”值时才会恢复。
不太优雅,但它的工作原理。