Назад | Перейти на главную страницу

Гистерезис триггера Zabbix - не возвращается к норме

У меня есть следующее, чтобы предотвратить сбой подключения агента (оно должно быть стабильным в течение 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-секундного элемента вернет:

  • 1: если данные не получены за весь 20-минутный временной диапазон (20 пустых значений)
  • 0: если все в порядке (20 полных значений)
  • 0: для всего, что находится между ними (например: 5 нормально, 5 минут недосягаемости, 10 нормально)

Я нашел обходной путь, предполагая, что вы проверяете доступность агента каждые 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 минут.

Не слишком элегантно, но работает.