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 つの依存関係を定義します。

'Host is down' トリガーは 'Router2 is down' トリガーに依存する
'Router2 is down' トリガーは 'Router1 is down' トリガーに依存する

'Host is down' トリガーのステータスを変更する前に、Zabbix は対応するトリガーの依存関係を確認します。 そのような依存関係が見つかり、そのうちのいずれかのトリガーが 'Problem' 状態である場合、トリガーのステータスは変更されず、アクションは実行されず、通知も送信されません。

Zabbix はこの確認を再帰的に行います。 Router1 または Router2 に到達できない場合、ホストのトリガーは更新されません。