3 トリガーの依存関係

概要

ホストの可用性が別のホストに依存することがあります。
ルーターの背後にあるサーバーは、ルーターが停止すると到達不能になります。
両方にトリガーを設定していると、実際にはルーターだけが原因であるにもかかわらず、2つのホストがダウンしたという通知を受け取ることがあります。

このような場合、ホスト間の依存関係が役立つことがあります。
依存関係を設定すると、依存先に対する通知を保留し、根本原因に関する通知だけを送信できます。

Zabbix はホスト間の依存関係を直接サポートしていませんが、より柔軟な別の方法であるトリガー依存関係を定義できます。
1つのトリガーは、依存する1つ以上のトリガーを持つことができます。

簡単な例では、サーバーのトリガー設定フォームを開き、そのトリガーがルーターの該当トリガーに依存するように設定します。
このような依存関係があると、依存先のトリガーが 'PROBLEM' 状態である限り、サーバーのトリガーは状態を変更せず、その結果、依存アクションは実行されず、通知も送信されません。

サーバーとルーターの両方が停止しており、「server down」トリガーと「router down」トリガーの間に依存関係が設定されている場合、Zabbix は依存先トリガーに対するアクションを実行しません。

親トリガーが PROBLEM 状態の間、依存先は信頼できない値を報告することがあります。
そのため、依存先トリガーは、親トリガー(上の例ではルーター)が次のいずれかになるまで再評価されません。

  • 'PROBLEM' から 'OK' 状態に戻る;
  • 'PROBLEM' から 'UNKNOWN' に状態が変わる;
  • 手動、相関、または date and time および/または nodata() 関数を使ってクローズされる;
  • 依存先トリガーに関与していないアイテムの値によって解決される;
  • 無効化される、無効なアイテムを持つ、または無効なアイテムのホストを持つ

上記のいずれの場合でも、依存先トリガー(サーバー)は、新しいメトリックを受信したときにのみ再評価されます。
つまり、依存先トリガーはすぐには更新されない場合があります。

また、次の点もあります。

  • トリガー依存関係は、循環依存にならない限り、任意のホストのトリガーから別の任意のホストのトリガーへ追加できます。
  • トリガー依存関係は、あるテンプレートから別のテンプレートへ追加できます。
    テンプレート A のあるトリガーがテンプレート B のあるトリガーに依存している場合、テンプレート A はテンプレート B と一緒にのみホスト(または別のテンプレート)にリンクできますが、テンプレート B は単独でホスト(または別のテンプレート)にリンクできます。
  • トリガー依存関係は、テンプレートのトリガーからホストのトリガーへ追加できます。
    この場合、そのテンプレートをホストにリンクすると、トリガーが依存していたのと同じトリガーテンプレートに依存するホストトリガーが作成されます。
    これにより、たとえば、いくつかのトリガーがルーター(ホスト)のトリガーに依存するテンプレートを作成できます。
    このテンプレートにリンクされたすべてのホストは、その特定のルーターに依存します。
  • トリガー依存関係は、ホストのトリガーからテンプレートのトリガーへは追加できません。
  • トリガー依存関係は、トリガープロトタイプから別のトリガープロトタイプへ(同じ low-level discovery ルール内で)または実際のトリガーへ追加できます。
    トリガープロトタイプは、別の LLD ルールのトリガープロトタイプや、トリガープロトタイプから作成されたトリガーに依存できません。
    ホストトリガープロトタイプは、テンプレートのトリガーに依存できません。

設定

依存関係を定義するには:

  1. トリガーの設定フォームDependencies タブを開きます。

  2. Dependencies セクションで Add をクリックし、そのトリガーが依存する1つ以上のトリガーを選択します。

  3. Update をクリックします。

これで、トリガー一覧にその依存関係が表示されます。

複数の依存関係の例

たとえば、ホストは Router2 の背後にあり、Router2 は Router1 の背後にあります。

Zabbix - Router1 - Router2 - ホスト

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 に到達できない場合、ホストのトリガーは更新されません。