3 トリガーの依存関係
概要
ホストの可用性が別のホストに依存する場合があります。ルーターの背後にあるサーバーは、ルーターがダウンすると到達不能になります。 両方に対してトリガーが設定されていると、実際に問題の原因がルーターだけであっても、2台のホストがダウンしたという通知を受け取る可能性があります。
このような場合、ホスト間の依存関係が役立ちます。 依存関係を設定すると、依存先の問題に起因する通知を抑止し、根本原因の問題に対する通知のみを送信できます。
Zabbix はホスト間の依存関係を直接サポートしていませんが、より柔軟な別の方法であるトリガーの依存関係によって定義できます。1つのトリガーは、依存先として1つ以上のトリガーを持つことができます。
この単純な例では、サーバーのトリガー設定フォームを開き、対応するルーターのトリガーに依存するよう設定します。このような依存関係がある場合、依存先のトリガーが「PROBLEM」状態である限り、サーバーのトリガーは状態を変更しません。そのため、依存するアクションは実行されず、通知も送信されません。
サーバーとルーターの両方がダウンしており、依存関係が設定されている場合、Zabbix は依存するトリガーに対してアクションを実行しません。
親トリガーが PROBLEM 状態にある間、その依存先は信頼できない値を報告する可能性があります。 そのため、依存するトリガーは、親トリガー(上記の例ではルーター)が次のいずれかになるまで再評価されません。
- 「PROBLEM」状態から「OK」状態に戻る
- 状態が「PROBLEM」から「UNKNOWN」に変わる
- 手動、相関関係、または date and time および/または nodata() 関数を使用してクローズされる
- 依存するトリガーに関与していないアイテムの値によって解決される
- 無効化される、無効なアイテムを持つ、または無効なアイテムを持つホストになる
上記のいずれの場合でも、依存するトリガー(サーバー)は、そのトリガーに対する新しいメトリクスを受信したときにのみ再評価されます。 これは、依存するトリガーがすぐには更新されない可能性があることを意味します。
また:
- トリガーの依存関係は、循環依存にならない限り、任意のホストのトリガーから別の任意のホストのトリガーへ追加できます。
- トリガーの依存関係は、あるテンプレートから別のテンプレートへ追加できます。テンプレート A のあるトリガーがテンプレート B のあるトリガーに依存している場合、テンプレート A はテンプレート B と一緒にのみホスト(または別のテンプレート)へリンクできます。一方、テンプレート B は単独でホスト(または別のテンプレート)へリンクできます。
- トリガーの依存関係は、テンプレートのトリガーからホストのトリガーへ追加できます。この場合、そのようなテンプレートをホストにリンクすると、同じ依存先トリガーテンプレートに依存するホストのトリガーが作成されます。これにより、たとえば、いくつかのトリガーがルーター(ホスト)のトリガーに依存するテンプレートを作成できます。このテンプレートにリンクされたすべてのホストは、その特定のルーターに依存することになります。
- トリガーの依存関係は、ホストのトリガーからテンプレートのトリガーへは追加できません。
- トリガーの依存関係は、あるトリガープロトタイプから別のトリガープロトタイプ(同じローレベルディスカバリルール内)または実際のトリガーへ追加できます。トリガープロトタイプは、別の LLD ルールのトリガープロトタイプや、トリガープロトタイプから作成されたトリガーに依存することはできません。ホストのトリガープロトタイプは、テンプレートのトリガーに依存できません。
設定
依存関係を定義するには、トリガーの設定フォームで「Dependencies」タブを開きます。「Dependencies」ブロックの Add をクリックし、そのトリガーが依存する1つ以上のトリガーを選択します。

Update をクリックします。これで、一覧内のトリガーに依存関係の表示が追加されます。

複数の依存関係の例
たとえば、ホストが Router2 の背後にあり、Router2 が Router1 の背後にあるとします。
Zabbix - Router1 - Router2 - Host
Router1 がダウンすると、当然ながらホストと Router2 にも到達できなくなりますが、 ホスト、Router1、Router2 のすべてがダウンしているという通知を3件受け取るのは過剰です。
そのため、この場合は次の2つの依存関係を定義します。
「Host is down」トリガーは「Router2 is down」トリガーに依存する
「Router2 is down」トリガーは「Router1 is down」トリガーに依存する
「Host is down」トリガーのステータスを変更する前に、Zabbix は対応するトリガーの依存関係を確認します。そのような依存関係が見つかり、それらのトリガーのいずれかが「Problem」状態にある場合、トリガーのステータスは変更されず、アクションは実行されず、通知も送信されません。
Zabbix はこの確認を再帰的に実行します。Router1 または Router2 に到達できない場合、ホストのトリガーは更新されません。