ログ監視のトリガー動作
お世話になります。
Windowsのイベントログ監視でトリガーが意図した動作をしない場合がある為、投稿させて頂きます。
zabbix-server:2.05
zabbix-agent:2.04
【アイテム設定】
タイプ:Zabbixエージェント(アクティブ)
キー:eventlog[system,,"Warning|Error"]
データ型:ログ
更新間隔:300
【トリガー設定】
条件式:{(hostname):eventlog[system,,"Warning|Error"].regexp(..*)}=1=0
障害イベントを継続して生成:チェックする
期待する動作は一度検知した障害メッセージの再通知は行わず、最後の障害検知後のしばらくメッセージがなければ、トリガーのステータスを基に戻したいのですが、上記設定だと、10秒前後でトリガーステータスが正常に戻る場合と、30秒経過後に障害再通知がされた後、正常に戻る場合があり、動作が安定しません。期待動作をさせるにはどのような設定が考えられますでしょうか?
iga - 投稿数: 6
トリガー条件式が正しく表示されていなかったので、再投稿します。
トリガー条件式:{(hostname):eventlog[system,,"Warning|Error"].regexp(..*)}=1&{(hostname):eventlog[system,,"Warning|Error"].nodata(10)}=0
TNK - 投稿数: 4671
まず、10秒程度で正常に戻るのは、トリガーの式でnodata(10)と10
秒間データが無ければ正常に戻す設定をされているからだと思いま
す。
あと、30秒経過後に障害通知されたとのことですが、Zabbixの場合、
アクションの実行はリアルタイムではありません。
アクションを実行するためのデータとして蓄えられ、確かデフォル
トでは30秒間隔でそのデータを確認していたはずですので、最大30
秒程度の遅れが発生する可能性があります。
もう少しイベントログのチェック間隔を短くし、「しばらくメッセ
ージがなければ」と表現されている「しばらく」の時間をnodata()
に指定されると改善されると思います。
kodai - 投稿数: 1341
nodata()を利用したトリガーが評価されるのは、
- 新規データを受信したとき
- 30秒に一度
です。データを受信しない場合は30秒に一度しか評価されませんので、nodata()のオプションには30秒未満の値を指定しても効果はありません。
また、アクションの送信はデフォルトで30秒に一度です。これはzabbix_server.confのSenderFrequencyで設定を変更できます。
おそらくは上記の評価タイミングによってトリガーが戻るタイミングが異なっているのだと思います。
iga - 投稿数: 6
コメントありがとうございました。
イベントログのチェック間隔やnodataの数値を変えてみましたが、「一度検知した障害メッセージの再通知は行わない。」の動作が、やはりうまくいきません。※同じエラーの再通知はしないが、他のエラーが発生した場合は通知したい。
nodata()に30以上に値を設定すると、30秒毎に障害再通知がされてしまい、これを回避する為に、nodata(10)に設定していたのですが、10秒で正常に戻る場合と、10秒では戻らず、30秒後に再通知(トリガー起動)されてしまうケースがあります。テストで定期的に同じエラーメッセージを出力するようにしていますが、前述の2つのケースに規則性は見つかりません。
TNK - 投稿数: 4671
「一度検知した障害メッセージの再通知は行わない。」は、現在の
設定では難しいと思います。
現在の設定で複数の警告やエラーが同じアイテムに含まれてしまう
ようなエラーであった場合、障害イベントを継続して生成にもチェ
ックされているようですので、何らか条件に合致してしまう警告や
エラーが発生するたびに通知されてしまいます。
どうしても他のエラーと混在させたくないのであれば、個別のアイ
テムとして登録して監視されることをお勧めします。
iga - 投稿数: 6
コメントありがとうございました。
今回やりたいことは以下になります。
- systemのイベントログで深刻度がErrorもしくはWarnnigのメッセージはすべて障害として検知する。
- 一度検知したメッセージの再通知は行わず、トリガーのステータスを正常に戻す。※戻すタイミングはいつでも良い。
nodataトリガーの仕様の理解が不足していたら申し訳ございませんが、自分の方で確認した限りでは、今回のトリガー設定の内容で、nodata(30)を指定すると、30秒後に再度、同じ障害イベント通知がされた後、トリガーステータスが正常に戻ります。この障害再通知をせずにトリガーステータスを正常に戻す動作のみさせたいのですが、そのような動作はできないのでしょうか?
「障害イベントを継続して生成」にチェックしなければ、再通知をされずにトリガーステータスが正常に戻りますが、この場合、30秒間は他のエラーが発生していたとしてもメッセージが拾えないと認識しています。