メンテナンス期間中にのみ特定のアクションを実行したい
いつもお世話になっております。
Zabbixにて監視を行い、障害を検知した場合、以下のようなアクションの実行を業務時間中、時間外で区別したいと考えております。
(1)業務時間中は、パトライトを鳴らすアクションを実行
(2)業務時間外は、担当者へE-Mailの送信を行う
この期間を区分するために、業務時間外をメンテナンス期間として設定し、「アクションの実行条件」タブの「アクションの実行条件」
に以下のように設定しています。実際そのように動作しているようです。
(1)のアクションでは、「メンテナンスの状態 期間外 メンテナンス」 AND 「トリガーの値 = 障害」
(2)のアクションでは、「メンテナンスの状態 期間中 メンテナンス」 AND 「トリガーの値 = 障害」
ここで、確認したい事は、「Zabbix Documentation 2.2」の「10. メンテナンス」-「概要」の部分に、メンテナンス期間中に発生した
イベントが、メンテナンス期間終了時点で同一のイベントを作成すると記載されているところです。
URL:https://www.zabbix.com/documentation/2.2/jp/manual/maintenance
私の設定した(2)の「メンテナンス期間中」にE-Mail送信を行うアクションは、継続して障害中のものについては、メンテナンス期間
終了時点で、再度実行されると言うことでしょうか?
実際、業務時間中に色々な障害をテストしていたのですが、メンテナンス期間終了時間にその時間に発生していないメールが送信
されました。
これが業務時間中に発生したどの障害なのか特定出来ていませんので、詳細を把握できていない状況での質問で申し訳ございま
せん。
文章だらけの内容で申し訳ございませんが、よろしくお願い致します。
KAZ - 投稿数: 1085
misakiさん
■マニュアル「10. メンテナンス」抜粋
https://www.zabbix.com/documentation/2.2/jp/manual/maintenance
「データ収集あり」のメンテナンス中は、これまでどおりトリガーが処理され、必要に応じてイベントが作成されます。
…略…
メンテナンス中にトリガーがイベントを発生させた場合、メンテナンスの終了時点で追加のイベント(メンテナンス中に作成された最後のイベントと同一)が作成されます。
と言うことで、仕様通りの動きかと…
[管理]-[ユーザ]-[メディア]の「有効な時間帯」設定をして業務時間中は飛ばさないようにするというのはどうですか?A(^^;
KAZ - 投稿数: 1085
misakiさん
■マニュアル「10. メンテナンス」抜粋
https://www.zabbix.com/documentation/2.2/jp/manual/maintenance
「データ収集あり」のメンテナンス中は、これまでどおりトリガーが処理され、必要に応じてイベントが作成されます。
…略…
メンテナンス中にトリガーがイベントを発生させた場合、メンテナンスの終了時点で追加のイベント(メンテナンス中に作成された最後のイベントと同一)が作成されます。
と言うことで、仕様通りの動きかと…
[管理]-[ユーザ]-[メディア]の「有効な時間帯」設定をして業務時間中と業務時間外を分けると言うのはどうでしょうか?
パトライト用のユーザのメディアは業務時間中有効
担当者のメディアは業務時間外有効
このやり方でちゃんと動くか試してないですが…A(^^;
misaki - 投稿数: 69
KAZさん
コメントありがとうございます。
メンテナンス期間中はアクションを実行させないものだけでなく、メンテナンス期間中にアクションの実行を行う設定になっていても、
メンテナンス期間が終了した時点で再度イベントが生成される。
仕様と理解してよろしいでしょうか?
あと、ご提案いただいた「有効な時間帯」の設定ですが、単純に祝日などを考えないのであればそれで対応できると思っているのです
が、その年の祝祭日について業務時間が変わるためにメンテナンス期間にそれぞれの祝日を登録して対応しようかと考えています。
カレンダー機能があれば助かるのですが。
KAZ - 投稿数: 1085
misakiさん
メンテナンス期間中はアクションを実行させないものだけでなく、メンテナンス期間中にアクションの実行を行う設定になっていても、
メンテナンス期間が終了した時点で再度イベントが生成される。
仕様と理解してよろしいでしょうか?
微妙に違うような気が…A(^^;
「データ収集あり」だとメンテナンス期間中でもイベントが生成されます。
アクションが実行されるかどうかはアクションの条件によります。
で、メンテナンス期間中にイベントが生成されるとメンテナンス期間が終了した時点で再度イベントが生成ます。
例えば、メンテナンス期間中に障害が発生した場合、
メンテナンス期間が終了した時点でイベントが生成されているので、
アクション条件が「メンテナンスの状態 期間外 メンテナンス」 AND 「トリガーの値 = 障害」だとメールが飛んで
メンテナンス期間中に障害が発生したことがわかります。
※:いつ発生したかはイベント見るとわかります。
misaki - 投稿数: 69
KAZさん
ありがとうございます。
うまく伝えきれない&理解できなく申し訳ありません。
アクションの設定如何によらず、
「メンテナンス期間中に発生した最後のイベントは、メンテナンス期間が終了した時点で再度イベントが生成される」
^^^^^^^^^^^^
「最後のイベント」のみ生成される。との認識でよろしかったでしょうか?
アクションの実行条件にメンテナンス期間中実行の設定を行っていて、メンテナンス期間中にアクションが実行されたとしても、
この最後のイベントは一度アクション実行されたにも関わらず、メンテナンス期間が終了した時点で再度イベント生成される。。
だと理解しました m(__)m
KAZ - 投稿数: 1085
misakiさん
「最後のイベント」のみ生成される。との認識でよろしかったでしょうか?
ここら辺難しいんですよね。A(^^;
「データ収集あり」だとメンテナンス期間中でもイベントが生成されます。
これが前提になります。
アクションを実行するかしないかはアクション条件によります。
つまり「メンテナンスの状態 期間外 メンテナンス」があるかどうかです。
メンテナンス期間終了した場合、メンテナンス期間中に障害が発生していたらアクションを実行すると言う仕様がります。
※:これがないとメンテナンス期間中に障害が発生し回復してない場合、わからなくなってしまうので。
その為に「メンテナンス期間が終了した時点でメンテナンス期間中の再度イベントが生成」されます。
ただし、同じトリガーに由来するイベント、
例えば、pingがメンテナンス期間中にNGなってOKなって
メンテナンス期間終了した場合、この時は後のイベントが優先されます。
その場合、メンテナンス終了後に「正常」のメールが飛んでしまいます。
これを防いでるのが、アクション条件「トリガーの値 = 障害」となります。
この状態だと、異常のメールしか飛ばないのでリカバリをonにして異常からの復帰メアッセージを飛ばすようになっています。
※:リカバリメッセージは該当アクション条件のトリガー値が反転すると飛び仕組みだったはず…
かなり入り組んでますので、メンテンス期間で動作を分けるのがかなり厳しいかなと…
検知側で時刻系のトリガー関数使って検知時帯を時間制限かけた方が制御が楽かもしれません。
misaki - 投稿数: 69
KAZさん
ありがとうございます。
最後のイベントについて、Zabbixシステムで検知したすべてのイベントの中で最後だと勘違いしてました。
もう少し動作テストを行って運用に耐えるものか確認してみます。
お忙しいところありがとうございました。