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

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

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

Обзор

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

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

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

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

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

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

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

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

Также:

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

Настройка

Чтобы определить зависимость:

  1. Откройте вкладку Зависимости в форме настройки триггера.

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

  3. Нажмите Обновить.

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

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

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

Zabbix - Router1 - Router2 - Host

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

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

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

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

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