トリガーの依存関係
トリガーの依存関係は、根本原因に関連しないアラートを回避するために使用できます。
すべてのベストプラクティスを参照してください。
概要
ホストの可用性が別のホストに依存することがあります。 ルーターの背後にあるサーバーは、ルーターが停止すると到達不能になります。 両方にトリガーを設定していると、実際にはルーターだけが原因であるにもかかわらず、2つのホストがダウンしたという通知を受け取ることがあります。
このような場合に、ホスト間の依存関係が役立つことがあります。 依存関係を設定すると、依存先に関する通知を抑制し、根本原因に関する通知だけを送信できます。
Zabbix はホスト間の依存関係を直接サポートしていませんが、より柔軟な別の方法であるトリガー依存関係を使って定義できます。 1つのトリガーは、1つ以上の依存先トリガーを持つことができます。
簡単な例では、サーバーのトリガー設定フォームを開き、ルーターの該当するトリガーに依存するように設定します。 このような依存関係があると、サーバーのトリガーは、依存先トリガーが 'PROBLEM' 状態である限り状態を変更しません。そのため、依存するアクションは実行されず、通知も送信されません。
サーバーとルーターの両方が停止しており、「server down」トリガーと「router down」トリガーの間に依存関係が設定されている場合、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 つの依存関係を定義します。
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 のトリガーは更新されません。