メンテナンス後のアラート通知について

Zabbix2.4.6を使用しております。

syslogサーバに複数のホストからログを収集しており、そこにfluentdをインストールし
fluent-plugin-zabbixを使用し、zabbix-senderにてZabbixサーバにログを送付しsyslog監視をしています。

タイトルにも記載させていただいた通り、メンテナンスを設定しメンテナンス期限が終了した後に
メンテナンス中に受信したログがアラート通知される事象が発生してます。
例えば、12:00~14:00までメンテナンスにし
14:00になったタイミングで13:30に受信したメッセージがメールにてアラート通知されます。
確認したところ、13:30にイベント生成され、14:00にイベントが再生成されているような動作をしていました。
通知されるのは、メンテナンス中に受信したもの全てではなく、最後のもののみです。

通常の利用については全く問題なく監視として機能しております。
メンテナンス状態から戻るときのみ、過去アラートが飛んできてしまいます。

-----------------------------------------------------------------------------
・アイテム
名前:syslog
タイプ:Zabbixトラッパー
キー:message
データ型:文字列

・トリガー ※条件式は実際のものではなく参考として記載してます。
条件式:{ホストA:message.iregexp(error)}<>0
障害イベントを継続して生成:チェック
-----------------------------------------------------------------------------

メンテナンス中に受信したアラートがメンテナンス終了後もステータスが異常となっているため
メンテナンス後に通知されているのではと考えております。
この事象について、なぜ起きているのかお知恵をお借りしたく。

単純にnodataを入れ、障害イベントを継続して生成のチェックを外せば解消するのであればそれでも良いのですが
例えばZabbixエージェントを使用したログ監視の場合でも、メンテンスが終了した場合に同じように
メンテナンス中に発生したものがアラート通知されるのでしょうか?

お手数おかけしますがよろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

恐らく、メンテナンス期間終了時点でトリガーの状態が「障害」に
なっているからだと思います。

メンテナンス期間の終了前に、トリガーの状態を「正常」に戻して
おけば、メンテナンス期間の終了時にアクションが実行されること
はないと思います。

TNK様

返信ありがとうございます。

確認したところメンテナンスに関しては条件式にnodataを入れ、障害イベントを継続して生成のチェックを外したことで
トリガーの状態を「正常」に戻すことで対応は可能でした。

変更したトリガー条件式は以下にしてます。
-----------------------------------------------------------------------------
条件式:({ホストA:message.iregexp(error)}<>0 and {ホストA:message.nodata(30)}=0)
障害イベントを継続して生成:チェックしない
-----------------------------------------------------------------------------

ただ、上記の条件にしたところ通常の監視に影響が出ました。
内容としては、同一時刻に同一ホストからメッセージを検知した場合、先に受信したもののみ通知されるようになりました。
(例えば同一時刻、同一ホストから3つメッセージを受信した場合、一番最初のメッセージはアラート通知されますが
他の2つはアラート通知されないという状態です)
Zabbixサーバの最新データとしては存在しているので、トリガー・アクションとして実行されていない状態となります。

また、上記の条件式で障害イベントを継続して生成のチェックを入れてしまうと
同一内容で2通送付されてしまうので、どういった設定にすれば良いか試行錯誤しております。

実施したいこととしては
・メンテナンスの期間を過ぎたときに過去アラートを飛ばしたくない → メンテナンス期間の終了前にトリガーの状態を「正常」に戻したい
・通常の監視の際に取りこぼしなくアラートを送付したい

こちら条件式等、どのように設定すればよいか教えていただけますと助かります。

よろしくお願いいたします。

連投失礼します。

最初のトリガー条件式に戻し検証したところ、メンテナンス期間の終了後、通知される場合とされない場合がありました。

■最初の条件式
-----------------------------------------------------------------------------
・アイテム
名前:syslog
タイプ:Zabbixトラッパー
キー:message
データ型:文字列

・トリガー ※条件式は実際のものではなく参考として記載してます。
条件式:{ホストA:message.iregexp(error)}<>0
障害イベントを継続して生成:チェック
-----------------------------------------------------------------------------

通知される場合、されない場合の違いとしては、最新のイベントで確認した時に
継続時間が続いているか、止まっているかの違いくらいでした。

ステータスとしては同じ障害となっているのですが
継続時間が数時間で止まる場合と、数秒で止まる場合の違いがわかりません。
進み続ける場合と止まる場合の違いはどのような場合か教えていただけると幸いです。