1アラートで3通メールが送信される
下記構成でエラーログの監視をしています。
監視サーバー CentOS7とZabbix 3.0.7で構成しています。
監視対象はWindows Server 2012 R2とZabbix agent 3.0.4で構成しています。
ログ監視のためのアイテムの設定は
タイプ:Zabbixエージェント(アクティブ)
キー:log[D:\Program Files\xxx\xxx\Logs\Connector.log,Time Out:,,,skip]
データ型:ログ
としてあり、Connector.logファイルの中から「Time Out:」の行だけ送信するようにしてあります。
Connector.logには電子メールのemlファイルの送信状況が記録されます。
トリガーは
{対象サーバー名:log[D:\Program Files\xxx\xxx\Logs\Connector.log,Time Out:,,,skip].nodata(1800)}=0 and {対象サーバー名:log[D:\Program Files\xxx\xxx\Logs\Connector.log,Time Out:,,,skip].str("Time Out:")}=1
障害イベントを継続して生成にチェックを入れてあります。
この設定にて疑似的に電子メールが送信できずにタイムアウトする状態を起こした場合
アイテムを確認すると
「2017/03/13 17:56:39
7024-8 | 13/03/2017 17:55:28.599 | 4 Warning | Time Out: aecccc73-37be-41bc-ae44-128ba4e902b9.eml」
というように1メールにつき1件だけ記録されるのですが、
トリガーで管理者宛にメール送信をすると下記のメールが3通送信されます。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Trigger: Time Out Aleart
Trigger status: PROBLEM
Trigger severity: Disaster
Trigger URL:
Item values:
1. Connector.log (Edge Server:log[D:\Program Files\xxx\xxx\Logs\Connector.log,Time Out:,,,skip]): 7024-8 | 13/03/2017 17:55:28.599 | 4 Warning | Time Out: aecccc73-37be-41bc-ae44-128ba4e902b9.eml
Original event ID: 1336
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
これを1通だけ送信するようにするにはどのような設定が必要でしょうか?
また「障害イベントを継続して生成」のチェックを外すと新しいアイテムを受信しているにもかかわらずメールが送信されなくなってします。
希望する動作としては「Time Out:」が含まれるログは全てメール送信したい。
「Time Out:」のログが止まってから30分後に復旧した旨のメールを送信したい。
このような動作をさせるためにはどのような設定にすればよろしいでしょうか?
御教示いただけると幸いです。
TNK - 投稿数: 4671
関数nodata()を使用した場合、書かれていたような条件式だと、イ
ベントログがパターンに合致した時と、nodata()の引数に関わらず
30秒間隔でnodata()が評価されるので、そのタイミングでもイベン
トが発生してしまいます。
ログが出力された以外のタイミングでのイベント発生を防ぎたいの
であれば、nodata()は使用しない方が良いと思います。
ログの監視であれば、確認したらコメントを入力して、ダッシュボ
ードフィルタで、
障害対応コメント未入力のみ
を表示させるようにしてみてはいかがでしょうか?
ご参考までに、Zabbix 3.2以降であれば、手動でトリガーをクロー
ズしてトリガーの状態を正常の状態に戻す機能が追加されています。
funimaru - 投稿数: 18
TNKさま
ご回答ありがとうございます。
相手方からはZabbix上で確認コメントを入れるのは手間なので、
障害発生、障害解消がメール通知されればいいと要望がありました。
現在の設定で、「障害イベントを継続して生成」のチェックを外すと一番最初のアラートを
メール通知し最後の通知が終わってから30分後に復旧メールが通知されることになりますでしょうか?
TNK - 投稿数: 4671
「障害イベントを継続して生成」のチェックを外したら、パターン
に合致ログが出力されても、トリガーの状態が障害の状態のままで
あれば、イベントが発生しません。
つまり、トリガーの状態が正常から障害になった最初の1回のみ通
知が行われ、その後、複数行該当するログが出力されても、nodata()
の条件に合致する限り通知は行われません。
ということで、復旧メールが送られるのは、最後の通知が終わって
から30分後ではなく、最後にパターンで指定しているログが出力さ
れてZabbixサーバーが受け取った30分後になると思います。
funimaru - 投稿数: 18
自己解決しました。
設定を変更し障害発生時に1回とnodata()を用いて、障害復旧時に1回通知を出すことにしました。
御教示いただきありがとうございました。
funimaru - 投稿数: 18
TNKさま
ご説明いただいたことを纏めますと
初回の「Time Out:」のログをZabixxが受信した時点で、障害検知およびメール通知を行い、
途中何回か「Time Out:」のログを受信するが特にメール通知は行わず
「Time Out:」のログがZabbixに届かなくなってから30分後に障害から正常に復帰し
復旧通知のメールを送信するという認識で合っていますでしょうか?