ログ監視のアラートを検知するタイミングについて

お世話になっております。

ログ監視の、アラートを検知するタイミングについてご質問させていただきます。

ログ監視で、該当の文字列を含むログが記録された場合に「障害」としてアラートを検知し、
該当の文字列を含まないログが記録された場合に「正常」となる設定をしております。

本設定では監視対象サーバのログに「障害」となるログの後に「正常」となるログが出力され、
Zabbix側が同時刻にその2つのログを収集した際に「障害」として検知しませんでした。

「障害」と「正常」のログをZabbixが同時刻に収集したときに、
「障害」として検知させる方法はありますでしょうか。

なお、トリガーは以下のように設定しております。

【トリガー条件式】
{テンプレート名:logrt["/var/log/zabbix/(zabbix_server.log|zabbix_server.log-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])"].iregexp(error|fail|fatal)}=1

以上、よろしくお願いいたします。

コメント表示オプション

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

エラー該当行ごとに通知を行いたいのであれば、トリガーの設定で
「障害イベントを継続して生成」にチェックしてあるかを確認して
ください。

ユーザー dondoc の写真

ご回答いただき、ありがとうございます。

説明に不備がございましたので、訂正させていただきます。

監視対象サーバのログに「障害」となるログの後に「正常」となるログが出力され、
Zabbix側が同時刻にその2つのログを収集した際に「障害」の"音声"および"ポップアップ"の通知がされませんでした。

また、ご回答いただきました「障害イベントを継続して生成」にチェックをいれ確認しましたが、
通知はされませんでした。

なお、音声通知の設定は以下のとおりとなっております。

【音声通知設定】
Webインターフェースのアラート表示:チェック
表示期間:3600
サウンド再生:表示期間
トリガーの深刻度
重度の障害:チェック
致命的な障害:チェック
※トリガーの深刻度は上記以外はチェックをつけておりません。

以上、よろしくお願いいたします。

ユーザー TNK の写真

ポップアップは定期的にチェックしてその時点での状態を表示する
のみです。
毎回イベントが発生するたびに表示されるものではありません。

ユーザー dondoc の写真

ご回答いただきありがとうございます。

定期的のチェックというのは、Web画面の更新間隔と認識しておりますが、相違ありませんでしょうか。

運用をするにあたり、リアルタイムでの監視が必須となるため
設定している更新間隔30秒内の最終ログが「正常」のログでも、
「障害」となるログが更新間隔内に出力されていれば音声で通知されるようしたいのですが、
どのように対処することができますでしょうか。

以上、よろしくお願いいたします。

ユーザー TNK の写真

定期的のチェックというのは、Web画面の更新間隔と認識しておりますが、相違ありませんでしょうか。

その通りです。

運用をするにあたり、リアルタイムでの監視が必須となるため
設定している更新間隔30秒内の最終ログが「正常」のログでも、
「障害」となるログが更新間隔内に出力されていれば音声で通知されるようしたいのですが、
どのように対処することができますでしょうか。

標準のZabbixのWebインターフェースの機能だけでは不可能です。

メールでの通知を確認するようにするか、メディアとして、何らか
のリアルタイムメッセージ通知が可能なアプリケーションを経由し
てメッセージを送るようなものを用意してください。

パトランプのようなものを使用するのも1つの方法でしょう。

ユーザー heya の写真

障害と正常のログが届く前、そのトリガーが障害状態(※)だったということはありませんか?
※つまり、最後に障害のログが出てから他のログが来ていない状態。

もしそうなら、同時刻とかは関係なしに、障害中に障害のログが来ても状態は変化しないので検知はしません(正常のログの方が先なら一瞬回復して、直後に来た障害のログで障害になり検知できますが)。

余談ですが、(zabbix_server.log|zabbix_server.log-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]) は zabbix_server.log(-[0-9]{8})? と書いても同じことになるはずなので、こっちの方がすっきりしますよ(試してはいませんが)。
#あくまで今後の参考程度で、もうすでに設定してあるものは変更しない方がいいと思います。

ユーザー dondoc の写真

ご回答いただき、ありがとうございます。

ご回答にいただきました※の状況ではなく、
更新間隔30秒内に「障害」と「正常」となるログが記録され、
更新間隔内の最新のログが「正常」となるログであったため、「障害」となるログの通知がされていない状態でした。

上述の状態ですので、更新間隔30秒内の最終ログが「正常」となるログでも、
更新間隔内で「障害」となるログを含んでいれば音声で通知したいと考えております。

何か方法がありましたら、ご教示いただけましたら幸いです。

また、トリガー条件の記載方法をご教示いただきまして、ありがとうございます。
今後の参考とさせていただきます。

ユーザー heya の写真

TNKさんが書かれている通り、Webインターフェースのアラート表示ではブラウザの更新タイミングとなるので、ご希望の動作は無理ということになります。

このため、やはりTNKさんが書かれている通り、メディアを登録してそれを使うことになると思います。
メディアに通知するには以下の設定が必要です。
・管理→メディアタイプ
・管理→ユーザー→メディア
・設定→アクション

音を鳴らしたい、となると、ぱっと思いつくのは二通り。

・音を鳴らす機械(TNKさんの言うパトランプ)を使う
例えば patlite とか 警子ちゃん とか。持ってないなら買う必要があります。
この方法では、その機械に(トラップなり rsh なりで)音を鳴らせと命令を出すスクリプトを書いて、アクションでそれを実行することになります。

・メールを送る。
こちらの方が手軽ですが、パソコンを常に起動しておく必要があります。
WindowUpdate などで再起動したりすると、その間は気づけません。
この方法では、Zabbix の設定としてはアクションでメールを送るだけですが、メールソフト側で音を鳴らすようにする必要があります。具体的には、
 - 定期的にメールを受信する設定にする
 - 新着メールがあるときに音を出して知らせる
という設定が必要です。なので、最低限この二つの機能を持ったメールソフトを使う必要があります。条件を満たすソフトはたくさんあると思いますが、少なくとも Mozilla Thunderbird なら大丈夫です。

ユーザー dondoc の写真

TNKさん heyaさん

ご回答いただき、ありがとうございます。

標準のZabbixのWebインターフェースの機能だけでは不可能であるむね承知しました。

ご回答いただきました方法で、実施するか否かを検討したいと思います。