ログ監視の障害メールについて
度々お世話になります。
前件ではありがとうございました、無事監視出来るようになりました。
ですが、また別途問題が起ってしまったので、お力添えを頂ければと存じます。
行いたい事:ログ監視時に、指定した時間に何回監視対象の文字列が出力されても、時間後に1通しか障害メールを飛ばさない。
現状 :時間後にメールは飛ぶが、出力された文字列行分だけメールがまとめて飛んでくる。
色々調べさせていただいたところ、正常→異常→正常→異常・・・ が繰り返され、その分飛んでいると言うのはわかりましたが
それに対する対策でバッチリ解決させれるような答えが見つけられませんでした。
アイテム側で文字を指定する と言う様な書き込みを見つけましたが、その場合は監視したい文字列分且つサーバーの数だけ設定追加が必要になりますので
あまり実用的とは思えず、今の所は検討していません。
指定された間隔であれば、正常・異常に変化しようが1通しか飛ばないような方法があればご教授下さい。
fripper - 投稿数: 495
参考までに、現在設定されているトリガー側の判定式をご提示いただけないでしょうか?
トリガー条件によって、対象文字列を含んだ行を取得した瞬間に「障害」となって、
その次の行を取得した瞬間に「正常」に戻る‥を繰返しているため、
その回数分だけメールが飛んでしまっているのだと思います
以下、regexp 関数を利用されていると仮定した場合の提案ですが‥
第2引数にて、時間を指定することで、「指定時間内に受け取った文字列中に‥あった場合」
といったような障害判定ができます
{host:log[hogehoge.log].regexp(kansi_str,86400)}>0
上で挙げた例ですと、86400秒、という扱いとなります
初めてエラー判定する文字列を受け取った段階で、「障害」状態になって、メールが飛びます
その後、ずっと「障害」状態が維持され、直近24時間に受け取ったログ内容に
判定文字列が含まれなかった時点で、初めて「障害」が「正常」に戻ります
いかがでしょうか?
ortan - 投稿数: 29
再度ご回答頂き、誠にありがとうございます!
私は以下の様に設定していました。
({ホスト:log[/var/error2.log].iregexp(error|failed|exception)}=1)&({ホスト:log[/var/error2.log].nodata(60)}=0)
>{host:log[hogehoge.log].regexp(kansi_str,86400)}>0
なるほど、第2引数に時間指定が出来たのですね!見逃しておりました。
ご教授頂いた内容で試してみたいと思います!
ortan - 投稿数: 29
現状ですが、上記教えて頂いた設定で試してみましたが、指定された時間を待たずにメールが飛び続けてしまう状況になってしまいました。
設定したトリガーは以下になります
{ホスト:log[/var/log/batch.log].iregexp(error|failed|exception,180)}>0
イベント生成も関係あるかと思い
ノーマル と ノーマル+障害イベントを継続して~ の両方を試しましたが、同じでした。
何か他に影響する設定でもありましたでしょうか・・・
fripper - 投稿数: 495
ortan さん
{ホスト:log[/var/log/batch.log].iregexp(error|failed|exception,180)}>0
とありますが、
{ホスト:log[/var/log/batch.log].iregexp(error|failed|exception),180}>0
ではありませんか?
180の数値が、正規表現の一部になってしまっているように見えます。
ortan - 投稿数: 29
ご返事ありがとうございます!
ご指摘頂いた
{ホスト:log[/var/log/batch.log].iregexp(error|failed|exception),180}>0
の書き方ですと、関数の外に時間が出てしまっているので、引数にならずエラーになってしまいますね。
あまり監視設定に割ける時間はないのですが、私も色々試してみたいと思いますので
もしお分かりになる方いらっしゃいましたら、何卒宜しくお願い致します。
kada - 投稿数: 3
始めまして。
私も今ログ監視で悩んでまして、色々ログ関連のフォーラム投稿を参考にさせて頂いてます。
このトリガー条件であれば、下記でできるのでは?
{ホスト:log[/var/log/batch.log].iregexp((error|failed|exception),180)}>0
投稿日時的にいまさらですが、参考になれば幸いです。