3 Зависимости триггеров

Обзор

Иногда доступность одного узла сети зависит от другого. Сервер, который находится за каким-нибудь роутером, будет недоступным, если сам роутер станет недоступным. При наличии настроенных триггеров для обоих устройств, вы можете получить оповещения о недоступности сразу обоих узлов сети — в то время как виноват только роутер.

В этом случае может оказаться очень полезной некоторая зависимость между узлами сети. При наличии зависимости оповещения о зависимых проблемах могут быть отложены, и будет отправлено только оповещение о корневой проблеме.

Хотя Zabbix не поддерживает зависимости между узлами сети напрямую, их можно задать при помощи другого, более гибкого метода — зависимости между триггерами. Триггер может зависеть от одного или нескольких триггеров.

Поэтому в нашем простом примере мы откроем диалог настройки триггера сервера и укажем, что он зависит от соответствующего триггера роутера. При наличии такой зависимости триггер сервера не изменит своё состояние, пока триггер, от которого он зависит (т.е. триггер роутера), находится в состоянии «ПРОБЛЕМА», и следовательно, зависимые действия не будут предприняты и оповещения не будут отправлены.

Если и сервер, и роутер станут недоступными и зависимость будет настроена, Zabbix не выполнит действия для зависимого триггера.

Пока родительский триггер находится в состоянии «ПРОБЛЕМА», его зависимые триггеры могут сообщать значения, которым нельзя доверять. Поэтому зависимый триггер будет вычислен повторно только после того, как его родительский триггер (в приведенном выше примере — роутер):

  • вернётся из состояния «ПРОБЛЕМА» в состояние «ОК»;
  • поменяет своё состояние с «ПРОБЛЕМА» на «НЕИЗВЕСТНО»;
  • будет закрыт вручную, корреляцией или при помощи функций дати и времени и/или функции nodata() ;
  • будет решён значением элемента данных, который не участвует в зависимом триггере;
  • будет отключён, иметь деактивированный элемент данных или деактивированый узел сети элемента данных.

Во всех вышеупомянутых случаях зависимый триггер (сервер) будет вычислен повторно только после того, как для него будут получены новые значения метрик. Это означает, что зависимый триггер может не быть обновлен незамедлительно.

Также:

  • Зависимость триггера можно добавить от любого триггера узла сети к любому другому триггеру узла сети, пока это не приводит к циклической зависимости.
  • Зависимость триггера можно добавить от шаблона к шаблону. Если триггер из шаблона А зависит от триггера из шаблона B, то шаблон A может быть соединён с узлом сети (или с другим шаблоном) только вместе с шаблоном B, но шаблон B можно присоединить к узлу сети (или другому шаблону) отдельно.
  • Зависимость триггера можно добавить от триггера шаблона к триггеру узла сети. В этом случае присоединение шаблона к узлу сети создаст триггер у узла сети, который будет зависеть от того же триггера, что и триггер шаблона. Это позволяет, например, иметь шаблон, в котором некоторые триггеры зависят от триггеров роутера (узла сети). Все узлы сети, соединённые с этим шаблоном, будут зависеть от этого конкретного роутера.
  • Зависимость триггера узла сети от триггера шаблона добавить нельзя.
  • Зависимость триггера можно добавить от прототипа триггеров к другому прототипу триггеров (в пределах одного правила низкоуровневого обнаружения) либо к реальному триггеру. Прототип триггеров не может быть зависим от прототипа триггеров другого правила обнаружения или от триггера, созданного из прототипа триггеров. Прототип триггера узла сети не может быть зависим от триггера из шаблона.

Настройка

Для того чтобы задать зависимость, откройте вкладку Зависимости в диалоге настройки триггера. Далее нажмите на Добавить в блоке 'Зависимости' и выберите один или несколько триггеров, от которых будет зависеть наш триггер.

Нажмите Обновить. Теперь триггер имеет в списке индикацию на свою зависимость.

Примеры нескольких зависимостей

Например, узел сети Хост находится за маршрутизатором Роутер2, а Роутер2 находится за Роутер1.

Zabbix - Роутер1 – Роутер2 - Хост

Если Роутер1 недоступен, то очевидно, что и Хост, и Роутер2 тоже недоступны; и получение трёх оповещений о недоступности Хост, Роутер1 и Роутер2 является избыточным.

Поэтому в данном случае мы зададим две зависимости:

триггер 'Хост недоступен' зависит от триггера 'Роутер2 недоступен'
       триггер 'Роутер2 недоступен' зависит от триггера 'Роутер1 недоступен'

Перед изменением состояния триггера 'Хост недоступен' Zabbix проверит зависимости у соответствующих триггеров. Если они будут найдены, и один из триггеров в находится в состоянии ПРОБЛЕМА, то состояние триггера не будет изменено и, следовательно, действия не будут выполнены и оповещения не будут отправлены.

Zabbix выполняет эту проверку рекурсивно. Если Роутер1 или Роутер2 недоступен, то триггер у Хост не будет изменён.