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

Зависимости триггеров можно использовать, чтобы избежать оповещений, не связанных с первопричиной.

См. все рекомендации.

Обзор

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

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

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

Итак, в нашем простом примере мы открываем форму настройки триггера сервера и указываем, что он зависит от соответствующего триггера маршрутизатора. При такой зависимости триггер сервера не будет изменять свое состояние, пока триггер, от которого он зависит, находится в состоянии 'PROBLEM' — и, следовательно, никакие зависимые действия выполняться не будут, а уведомления отправляться не будут.

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

Пока родительский триггер находится в состоянии PROBLEM, его зависимые триггеры могут сообщать значения, которым нельзя доверять. Поэтому зависимые триггеры не будут переоцениваться до тех пор, пока родительский триггер (маршрутизатор в приведенном выше примере):

  • не вернется из состояния 'PROBLEM' в состояние 'OK';
  • не изменит свое состояние с 'PROBLEM' на 'UNKNOWN';
  • не будет закрыт вручную, с помощью корреляции или с помощью функций date and time и/или nodata();
  • не будет разрешен значением элемента данных, не участвующего в зависимом триггере;
  • не будет отключен, либо пока не будет отключен его элемент данных или узел сети элемента данных

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

Также:

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

Настройка

Чтобы определить зависимость, откройте вкладку «Зависимости» в форме настройки триггера. Нажмите Добавить в блоке «Зависимости» и выберите один или несколько триггеров, от которых будет зависеть данный триггер.

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

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

Например, узел сети находится за Router2, а Router2 находится за Router1.

Zabbix - Router1 - Router2 - Host

Если Router1 недоступен, то, очевидно, узел сети и Router2 также недоступны, однако получение трёх уведомлений о том, что узел сети, Router1 и Router2 недоступны, является избыточным.

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

триггер 'Host is down' зависит от триггера 'Router2 is down'
триггер 'Router2 is down' зависит от триггера 'Router1 is down'

Перед изменением состояния триггера 'Host is down' Zabbix проверит соответствующие зависимости триггеров. Если такие зависимости найдены и один из этих триггеров находится в состоянии Проблема, то состояние триггера не будет изменено, действия не будут выполнены и уведомления не будут отправлены.

Zabbix выполняет эту проверку рекурсивно. Если Router1 или Router2 недоступен, триггер узла сети не будет обновлён.