はじめに
以下のようにZABBIXから監視対象③に対して死活監視を行っている場合、監視対象①または②が死活監視でNGとなったときにトリガー依存関係がどのように機能するのか気になった。
【死活監視経路】
ZABBIX(死活監視) → 監視対象① → 監視対象② → 監視対象③
そこで、以下のZabbix公式ドキュメント「複数の依存関係」に記載されている内容を基に、実際に検証を行った。
検証環境
ZABBIXサーバー1台(ver. 7.0):
ホスト名:zabbix
監視対象サーバー3台(エージェント導入済み):
ホスト名:server1、server2、server3
※4台とも同セグメント
死活監視テンプレート(00_Ping_Check):
[アイテム]
[トリガー]
検証準備
まず、監視対象サーバー(server1、server2、server3)に対して作成したテンプレートを紐づける。紐づけた後は、以下の対応を行う。
・「server1」のトリガーに対して、依存関係は設定しない。
・「server2」のトリガーに対して、依存関係として「server1」のトリガーを設定する。
・「server3」のトリガーに対して、依存関係として「server2」のトリガーを設定する。
検証 ①:[server1:OK] [server2:OK] [server3:NG]
死活監視の状態が「server1:OK」、「server2:OK」、「server3:NG」の場合における
トリガーの発動状況を確認する。
想定通りに「server3」のトリガーが発動した。
検証 ②:[server1:OK] [server2:NG] [server3:NG]
死活監視の状態が「server1:OK」、「server2:NG」、「server3:NG」の場合における
トリガーの発動状況を確認する。
「server2」のトリガーは発動した。しかし、「server3」の死活監視状態がNGであるにもかかわらず、トリガーは発動していない。これは、「server3」のトリガーに「server2」のトリガーを依存関係として設定しているためである。
検証 ③:[server1:NG] [server2:NG] [server3:NG]
死活監視の状態が「server1:NG」、「server2:NG」、「server3:NG」の場合における
トリガーの発動状況を確認する。
「server1」のトリガーは発動した。しかし、「server2」と「server3」の死活監視状態がNGであるにもかかわらず、トリガーは発動していない。これは、「server2」のトリガーに「server1」のトリガーを依存関係として設定し、さらに「server3」のトリガーに「server2」のトリガーを依存関係として設定しているためである。
検証 ④:[server1:NG] [server2:OK] [server3:NG]
死活監視の状態が「server1:NG」、「server2:OK」、「server3:NG」の場合における
トリガーの発動状況を確認する。
「server1」のトリガーは発動した。しかし、「server3」の死活監視状態がNGであるにもかかわらず、トリガーは発動していない。これは、「server2」のトリガーに「server1」のトリガーを依存関係として設定し、さらに「server3」のトリガーに「server2」のトリガーを依存関係として設定しているためである。
Zabbixはトリガーを発動する際、依存関係を再帰的にチェックする仕組みになっている。そのため、この依存関係の設定により、「server3」のトリガーは結果として発動しなかった。
追加検証
1つのトリガーに複数の依存関係が設定されている場合、どのように動作するのかが気になったため、追加で検証を行うことにした。(依存関係は、「OR」なのか「AND」なのか。)
トリガーの依存関係を下記の通りに設定する。
・「server1」のトリガーに対して、依存関係は設定しない。
・「server2」のトリガーに対して、依存関係は設定しない。
・「server3」のトリガーに対して、依存関係として「server1」と「server2」のトリガーを設定する。
死活監視の状態が「server1:OK」、「server2:NG」、「server3:NG」の場合における
トリガーの発動状況を確認する。
「server2」のみがトリガーを発動した。「server1」の死活監視状態がOKであるにもかかわらず、「server3」のトリガーは発動していない。このことから、複数の依存関係は「OR」条件で動作していることが分かる。
念のため:
[server1:NG] [server2:OK] [server3:NG]
[server1:NG] [server2:NG] [server3:NG]
[server1:OK] [server2:OK] [server3:NG]
以上