リカバリメッセージについて
こんにちは。
マニュアルを読んでもリカバリメッセージがいまいち理解できないので、どなたか教えていただけますでしょうか。
以下ではアクションの内容をメール送信と仮定しています。
リカバリメッセージは「回復時に障害時とは違った文面のメールを送りたい」というときに使うものであり、リカバリメッセージを設定しなければ回復時は障害時と同じメッセージを送ることになる({TRIGGER.STATUS} を入れれば違いは判断できる)、と思っています。
直感的には、アクションの実行条件で「トリガーの値 = 障害」を設定すると、障害時だけメールを出し、回復時は一切メールを出さない、となりそうに思えます。
しかし実際はリカバリメッセージが設定してあればそのリカバリメッセージが送られます。
これはどう理解したらいいのか?というのが分からないのです。
よく分からないので、いろいろ試してみました。ついでに、トリガーを追加後、初回の条件判定で正常と判定される場合の挙動も調べました(初回正常時というのがそれです)。
Zabbix のバージョンは 2.2.5 です。
■アクションの実行条件で「トリガーの値 = 障害」と設定した場合
障害時:リカバリメッセージに関係なく、デフォルトのメッセージを送る。
回復時:リカバリメッセージが有効なら、リカバリメッージを送る。★1
リカバリメッセージが無効なら、何もしない。
初回正常時:リカバリメッセージに関係なく、何もしない。
■アクションの実行条件で「トリガーの値 = 正常」と設定した場合
障害時:リカバリメッセージが有効なら、リカバリメッセージを送る。★2
リカバリメッセージが無効なら、何もしない。
回復時:リカバリメッセージに関係なく、デフォルトのメッセージを送る。★3
初回正常時:リカバリメッセージに関係なく、デフォルトのメッセージを送る。★4
■アクションの実行条件で「トリガーの値 = xx」を設定しなかった場合
障害時:リカバリメッセージに関係なく、デフォルトのメッセージを送る。
回復時:リカバリメッセージに関係なく、デフォルトのメッセージを送る。★3
初回正常時:リカバリメッセージに関係なく、デフォルトのメッセージを送る。★4
ここで、★の部分が直感と反するような気がするのですが、なぜこういう挙動になっているのでしょうか?
★1 「トリガーの値 = 障害」という条件を満たしてないのになぜ送る?
★2 障害時なのにリカバリメッセージ?
★3 リカバリメッセージが有効でもリカバリメッセージでなくデフォルトのメッセージ?
★4 トリガー登録直後は正常となっていて、初回判定結果が正常なら、正常→正常で変化はないんだから何もアクションは起こさないのでは?
詳しい方、よろしくお願いします。
おまけ:マニュアルの関係ありそうな部分
https://www.zabbix.com/documentation/2.2/jp/manual/config/events
>トリガーイベント - トリガーがそのステータスを変更するたび ([正常]→[障害]→[正常])
https://www.zabbix.com/documentation/2.2/jp/manual/config/notifications/...
>[リカバリメッセージ]が有効になっていると、OKトリガーイベントは[リカバリ]イベントとして処理されます。1つのリカバリイベントに対して1件のリカバリメッセージだけが送信されます(フルエスカレーションは実行されません)。
>注:アクションが「トリガーの値 = 障害」という条件を含む場合のみ、OKイベントのためのカスタムリカバリメッセージが機能します。
OKイベント=通常の回復時、リカバリイベント=リカバリメッセージが有効な状態での回復時、ということ?そうだとして、この注がなぜこうなっているのかがよく分からない。
https://www.zabbix.com/documentation/2.2/jp/manual/config/notifications/...
>トリガーの状態がOKから障害に変化する場合、トリガー値は障害になります。
>トリガーの状態が障害からOKに変化する場合、トリガー値はOKになります。
これはいいとして、
> 「トリガー値 = 障害」 - そのため、障害通知のみが送信されます。特定の条件を設定することなく、アクションを設定した場合、メッセージがすべての障害に対して送られます。これにより、リカバリメッセージチェックボックスは、直感的に利用できます。
これがよく分からない。
TNK - 投稿数: 4671
私なりの理解では以下のようなイメージです。
リカバリ時のアクション実行は、アクションの実行条件を満たして
いる状態から満たさない状態に遷移した際、この例であれば、トリ
ガーが「障害」から「正常」に変化した時点で実行されるので、実
行条件とは関係なくリカバリメッセージが送られると思います。
条件式を満たす状態から満たさない状態に遷移したと考えれば、リ
カバリメッセージが送られるというのも理解できなくはないですが、
障害発生時にデフォルトメッセージを送りたいのであれば、それは
条件式の設定が真偽逆だと思います。
「トリガーの値 = 正常」と指定していれば、トリガーの値が正常
になった時にアクションが実行されますので、それはデフォルトの
アクションが実行され、デフォルトのメッセージが送られると思い
ます。
トリガーの値の条件式が設定されていないのであれば、トリガーの
状態が変化するたびに条件式に合致してしまうので、デフォルトの
メッセージが送られてしまうでしょう。
「トリガーの値 = 正常」の初回正常時は、★3と同様に、トリガ
ーの値が「不明」から「正常」になった条件式と合致するのでデフ
ォルトのメッセージが送信されるでしょう。
トリガーの値の条件式を指定しないのであれば、トリガーの状態が
正常であろうが異常であろうが関係なく実行するという条件式を指
定したことになってしまうので、トリガーの状態が「不明」から
「正常」に変化してデフォルトのアクションが実行されるでしょう。
新しいバージョンでは明示的に「不明」という状態ではなかったか
もしれませんが、最初に正常であると判定された際には「正常」の
イベントが発生したはずです。
私は、通常、障害発生時に通知を行いたいと思うので、必ず、
「トリガーの値 = 障害」
を設定するようにしています。
heya - 投稿数: 319
TNKさん、ありがとうございます。
実はまだ完全に理解できてないのですが、時間に余裕ができたらじっくり読みなおしてみることにします。
kawara - 投稿数: 4
誤って投稿してしまいました。申し訳ありません。