Иногда доступность одного узла сети зависит от другого. Сервер, который находится за каким-нибудь роутером, будет недоступным, если сам роутер станет недоступным. При наличии настроенных триггеров для обоих устройств, вы можете получить оповещения о недоступности сразу обоих узлов сети — в то время как виноват только роутер.
В этом случае может оказаться очень полезной некоторая зависимость между узлами сети. При наличии зависимости оповещения о зависимых проблемах могут быть отложены, и будет отправлено только оповещение о корневой проблеме.
Хотя Zabbix не поддерживает зависимости между узлами сети напрямую, их можно задать при помощи другого, более гибкого метода — зависимости между триггерами. Триггер может зависеть от одного или нескольких триггеров.
Поэтому в нашем простом примере мы откроем диалог настройки триггера сервера и укажем, что он зависит от соответствующего триггера роутера. При наличии такой зависимости триггер сервера не изменит своё состояние, пока триггер, от которого он зависит (т.е. триггер роутера), находится в состоянии «ПРОБЛЕМА», и следовательно, зависимые действия не будут предприняты и оповещения не будут отправлены.
Если и сервер, и роутер станут недоступными и зависимость будет настроена, Zabbix не выполнит действия для зависимого триггера.
Пока родительский триггер находится в состоянии «ПРОБЛЕМА», его зависимые триггеры могут сообщать значения, которым нельзя доверять. Поэтому зависимый триггер будет вычислен повторно только после того, как его родительский триггер (в приведенном выше примере — роутер):
Во всех вышеупомянутых случаях зависимый триггер (сервер) будет вычислен повторно только после того, как для него будут получены новые значения метрик. Это означает, что зависимый триггер может не быть обновлен незамедлительно.
Также:
Для того чтобы задать зависимость, откройте вкладку Зависимости в диалоге настройки триггера. Далее нажмите на Добавить в блоке 'Зависимости' и выберите один или несколько триггеров, от которых будет зависеть наш триггер.
Нажмите Обновить. Теперь триггер имеет в списке индикацию на свою зависимость.
Например, узел сети Хост находится за маршрутизатором Роутер2, а Роутер2 находится за Роутер1.
Если Роутер1 недоступен, то очевидно, что и Хост, и Роутер2 тоже недоступны; и получение трёх оповещений о недоступности Хост, Роутер1 и Роутер2 является избыточным.
Поэтому в данном случае мы зададим две зависимости:
триггер 'Хост недоступен' зависит от триггера 'Роутер2 недоступен'
триггер 'Роутер2 недоступен' зависит от триггера 'Роутер1 недоступен'
Перед изменением состояния триггера 'Хост недоступен' Zabbix проверит зависимости у соответствующих триггеров. Если они будут найдены, и один из триггеров в находится в состоянии ПРОБЛЕМА, то состояние триггера не будет изменено и, следовательно, действия не будут выполнены и оповещения не будут отправлены.
Zabbix выполняет эту проверку рекурсивно. Если Роутер1 или Роутер2 недоступен, то триггер у Хост не будет изменён.