Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

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

Обзор

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

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

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

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

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

Действия на зависимые триггера не будут выполняться, если триггер от которого они зависят:

  • меняет своё состояние с 'ПРОБЛЕМА' на 'НЕИЗВЕСТНО'
  • закрыт вручную, корреляцией или при помощи функций связанных со временем
  • решен значением элемента данных, который не участвует в зависимом триггере
  • отключен, имеет деактивированный элемент данных или узел сети элемента данных деактивирован

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

Также:

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

Настройка

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

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

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

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

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

Если Роутер1 недоступен, то очевидно, что и Хост и Роутер2 недоступны. И мы не хотим получать три оповещения с информацией о недоступности Хост, Роутер1 и Роутер2.

Для этого случая, мы зададим эти зависимости:

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

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

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