3 트리거 의존성

개요

때로는 한 호스트의 가용성이 다른 호스트에 의존하는 경우가 있습니다. 라우터 뒤에 있는 서버는 라우터가 다운되면 접근할 수 없게 됩니다. 둘 다에 트리거가 구성되어 있다면, 실제로는 라우터만 문제였는데도 두 호스트가 다운되었다는 알림을 받게 될 수 있습니다.

이런 경우 호스트 간의 의존성이 유용할 수 있습니다. 의존성이 설정되면, 의존적인 호스트들의 알림은 보류되고 근본 문제에 대한 알림만 전송됩니다.

Zabbix는 호스트 간 의존성을 직접적으로 지원하지는 않지만, 더 유연한 방법인 트리거 의존성으로 정의할 수 있습니다. 트리거는 의존하는 하나 이상의 트리거를 가질 수 있습니다.

간단한 예에서 서버 트리거 구성 폼을 열고 해당 라우터의 트리거에 의존하도록 설정합니다. 이러한 의존성으로, 서버 트리거는 의존하는 트리거가 'PROBLEM' 상태에 있는 동안은 상태를 변경하지 않으며, 따라서 의존적인 액션이 실행되지 않고 알림도 전송되지 않습니다.

서버와 라우터가 모두 다운되고 "서버 다운" 트리거와 "라우터 다운" 트리거 간에 의존성이 설정되어 있다면, Zabbix는 의존적인 트리거에 대한 액션을 실행하지 않습니다.

부모 트리거가 PROBLEM 상태에 있는 동안, 의존적인 트리거들은 신뢰할 수 없는 값을 보고할 수 있습니다. 따라서 의존적인 트리거들은 부모 트리거(위 예에서는 라우터)가 다음 중 하나가 될 때까지 재평가되지 않습니다:

  • 'PROBLEM'에서 'OK' 상태로 돌아갈 때;
  • 상태가 'PROBLEM'에서 'UNKNOWN'으로 변경될 때;
  • 수동으로, 상관관계에 의해, 또는 날짜 및 시간 및/또는 nodata() 함수의 도움으로 닫힐 때;
  • 의존적인 트리거에 관련되지 않은 아이템의 값에 의해 해결될 때;
  • 비활성화되거나, 비활성화된 아이템을 가지거나, 비활성화된 아이템 호스트를 가질 때

위에서 언급한 모든 경우에서, 의존적인 트리거(서버)는 새로운 메트릭이 수신될 때만 재평가됩니다. 이는 의존적인 트리거가 즉시 업데이트되지 않을 수 있음을 의미합니다.

또한:

  • 순환 의존성을 발생시키지 않는 한, 트리거 의존성은 모든 호스트 트리거에서 다른 호스트 트리거로 추가할 수 있습니다.
  • 트리거 의존성은 한 템플릿에서 다른 템플릿으로 추가할 수 있습니다. 템플릿 A의 어떤 트리거가 템플릿 B의 어떤 트리거에 의존하는 경우, 템플릿 A는 템플릿 B와 함께만 호스트(또는 다른 템플릿)에 연결될 수 있지만, 템플릿 B는 단독으로 호스트(또는 다른 템플릿)에 연결될 수 있습니다.
  • 트리거 의존성은 템플릿 트리거에서 호스트 트리거로 추가할 수 있습니다. 이 경우, 이러한 템플릿을 호스트에 연결하면 트리거가 의존했던 동일한 트리거 템플릿에 의존하는 호스트 트리거가 생성됩니다. 예를 들어, 일부 트리거가 라우터(호스트) 트리거에 의존하는 템플릿을 가질 수 있습니다. 이 템플릿에 연결된 모든 호스트는 해당 특정 라우터에 의존하게 됩니다.
  • 트리거 의존성은 호스트 트리거에서 템플릿 트리거로는 추가할 수 없습니다.
  • 트리거 의존성은 트리거 프로토타입에서 다른 트리거 프로토타입(동일한 저수준 검색 규칙 내에서) 또는 실제 트리거로 추가할 수 있습니다. 트리거 프로토타입은 다른 LLD 규칙의 트리거 프로토타입이나 트리거 프로토타입에서 생성된 트리거에 의존할 수 없습니다. 호스트 트리거 프로토타입은 템플릿의 트리거에 의존할 수 없습니다.

구성

의존성을 정의하려면:

  1. 트리거 구성 폼에서 Dependencies 탭을 엽니다.

  2. Dependencies 섹션에서 Add를 클릭하고 트리거가 의존할 하나 이상의 트리거를 선택합니다.

  3. Update를 클릭합니다.

이제 트리거가 목록에서 의존성 표시를 가집니다.

여러 의존성의 예

예를 들어, 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 트리거는 업데이트되지 않습니다.