У меня есть следующее, чтобы предотвратить сбой подключения агента (оно должно быть стабильным в течение 20 минут, прежде чем помечено как ОК).
После исправления синтаксиса из Zabbix Trigger Hysteresis - Неверное выражение триггера Имею следующее:
({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, поэтому пока пытаюсь работать с вышеуказанным.
Я проверил последние данные агента по целям и вижу, что пинг агента действительно 1
более 20 минут.
Есть идеи, что я сделал не так, пожалуйста?
Провел несколько экспериментов:
Agent.ping записывает значение «1», если он доступен, и ничего не записывает, если недоступен; поэтому даже если ваш агент недоступен в течение 2 часов, последнее значение равно 1. Это означает, что .min (), .avg () и т.д. всегда работает со списком значений "1".
Функция .nodata () также не помогает с отскоками: она возвращает «1» только в том случае, если не получила никаких данных за весь временной интервал, в противном случае - «0».
Например, .nodata (20m) для 60-секундного элемента вернет:
Я нашел обходной путь, предполагая, что вы проверяете доступность агента каждые 60 секунд:
({TRIGGER.VALUE}=0 and {Template App Zabbix Agent:agent.ping.nodata(5m)}=1) or ({TRIGGER.VALUE}=1 and {Template App Zabbix Agent:agent.ping.count(20m,1)}<20)
Выражение сработает после 5 минут недостижимости и восстановится только тогда, когда у вас будет 20 значений "1" за последние 20 минут.
Не слишком элегантно, но работает.