트리거 종속성
개요
때때로 한 호스트의 가용성은 다른 호스트에 종속됩니다. 라우터 뒤에 있는 서버는 라우터가 다운되면 접근할 수 없게 됩니다. 두 호스트 모두에 트리거가 설정되어 있으면, 실제로는 라우터만 문제였음에도 두 호스트가 다운되었다는 알림을 받을 수 있습니다.
이때 호스트 간의 종속성이 유용할 수 있습니다. 종속성이 설정되면 종속된 대상의 알림은 보류되고 근본 문제에 대한 알림만 전송될 수 있습니다.
Zabbix는 호스트 간의 종속성을 직접 지원하지는 않지만, 더 유연한 방법인 트리거 종속성으로 이를 정의할 수 있습니다. 트리거는 자신이 종속되는 하나 이상의 트리거를 가질 수 있습니다.
따라서 앞서의 간단한 예시에서, 서버 트리거 설정 폼을 열어 라우터의 해당 트리거에 종속되도록 설정합니다. 이러한 종속성이 설정되면, 서버 트리거는 자신이 종속된 트리거가 'PROBLEM' 상태로 남아있는 한 상태를 변경하지 않으며, 따라서 종속된 액션이 실행되거나 알림이 전송되지 않습니다.
서버와 라우터가 모두 다운되고 "server down" 트리거와 "router down" 트리거 사이에 종속성이 설정된 경우, Zabbix는 종속된 트리거에 대한 액션을 실행하지 않습니다.
상위(parent) 트리거가 PROBLEM 상태인 동안에는 그에 종속된 트리거들이 신뢰할 수 없는 값을 보고할 수 있습니다. 따라서 종속된 트리거는 상위 트리거(위 예시에서는 라우터)가 다음 중 하나에 해당하기 전까지는 재평가되지 않습니다:
- 'PROBLEM'에서 'OK' 상태로 돌아감;
- 상태가 'PROBLEM'에서 'UNKNOWN'으로 변경됨;
- date and time 및/또는 nodata() 함수의 도움을 받아 상관분석(correlation)으로, 또는 수동으로 종료됨;
- 종속 트리거에 관여하지 않는 아이템 값에 의해 해결됨;
- 비활성화되었거나, 비활성화된 아이템 또는 비활성화된 아이템 호스트를 가짐
위에 언급된 모든 경우, 종속된 트리거(서버)는 새로운 메트릭을 수신할 때만 재평가됩니다. 이는 종속된 트리거가 즉시 업데이트되지 않을 수 있음을 의미합니다.
또한:
- 트리거 종속성은 순환 종속성을 일으키지 않는 한, 어떤 호스트 트리거에서든 다른 호스트 트리거로 추가할 수 있습니다.
- 트리거 종속성은 한 템플릿에서 다른 템플릿으로 추가할 수 있습니다. 템플릿 A의 어떤 트리거가 템플릿 B의 어떤 트리거에 종속되어 있다면, 템플릿 A는 템플릿 B와 함께여야만 호스트(또는 다른 템플릿)에 링크될 수 있지만, 템플릿 B는 단독으로 호스트(또는 다른 템플릿)에 링크될 수 있습니다.
- 트리거 종속성은 템플릿 트리거에서 호스트 트리거로 추가할 수 있습니다. 이 경우, 해당 템플릿을 호스트에 링크하면 트리거가 종속되었던 것과 동일한 트리거 템플릿에 종속되는 호스트 트리거가 생성됩니다. 이를 통해, 예를 들어 일부 트리거가 라우터(호스트) 트리거에 종속된 템플릿을 만들 수 있습니다. 이 템플릿에 링크된 모든 호스트는 해당 특정 라우터에 종속됩니다.
- 트리거 종속성은 호스트 트리거에서 템플릿 트리거로는 추가할 수 없습니다.
- 트리거 종속성은 트리거 프로토타입에서 (동일한 하위 레벨 디스커버리 규칙 내의) 다른 트리거 프로토타입으로, 또는 실제 트리거로 추가할 수 있습니다. 트리거 프로토타입은 다른 LLD 규칙의 트리거 프로토타입이나 트리거 프로토타입으로부터 생성된 트리거에는 종속될 수 없습니다. 호스트 트리거 프로토타입은 템플릿의 트리거에 종속될 수 없습니다.
설정
종속성을 정의하려면:
-
트리거 설정 폼에서 Dependencies 탭을 엽니다.
-
Dependencies 섹션에서 Add를 클릭하고 해당 트리거가 종속될 하나 이상의 트리거를 선택합니다.

-
Update를 클릭합니다.
이제 목록에서 해당 트리거에 종속성 표시가 나타납니다.

여러 종속성의 예시
예를 들어, Host는 Router2 뒤에 있고 Router2는 Router1 뒤에 있습니다.
Zabbix - Router1 - Router2 - Host
Router1이 다운되면 당연히 Host와 Router2도 접근할 수 없게 되지만, Host, Router1, Router2가 모두 다운되었다는 세 개의 알림을 받는 것은 과도합니다.
따라서 이 경우 두 개의 종속성을 정의합니다:
the 'Host is down' trigger depends on the 'Router2 is down' trigger
the 'Router2 is down' trigger depends on the 'Router1 is down' trigger
'Host is down' 트리거의 상태를 변경하기 전에, Zabbix는 해당 트리거 종속성을 확인합니다. 그러한 종속성이 발견되고 그 트리거들 중 하나가 'Problem' 상태이면, 트리거 상태는 변경되지 않고 액션도 실행되지 않으며 알림도 전송되지 않습니다.
Zabbix는 이 확인을 재귀적으로 수행합니다. Router1 또는 Router2에 접근할 수 없으면 Host 트리거는 업데이트되지 않습니다.