ログ監視のトリガーの関する質問

いつもお世話になっております。

ログ監視のトリガーについて質問させていただきます。

ログ監視の条件式にて、「err:~~エラーメッセージ~~」のようなエラーメッセージを
検知させるため「err」を含むメッセージを出力した場合、障害として検知するように設定しております。
しかし、「err」を含む英単語(interrupt,preferred等)が出力された場合も検知してしまいます。

条件式については以下を設定しておりますが、以下の取り込みたい条件を満たすよう設定することは可能でしょうか。
可能であれば、どのように設定したらよいかご教示いただけましたら幸いです。

【条件式(現在)】
{テンプレート名:logrt["アイテムキー.[0-9])",@正規表現].iregexp(err|crit|alert|emerg)}=1

【取り込みたい条件】
・「err」が含むメッセージを障害として検知する(「err:~~エラーメッセージ~」のように出力されるため)
・エラーメッセージで「interrupt」等の英単語を含む場合は検知する
・エラーメッセージではないメッセージに「interrupt」等の英単語の中のみに「err」がある場合は検知しない

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

コメント表示オプション

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

正規表現での表記だと、「行の先頭」を示す「^」記号が使えるかと思います

行の先頭に、分類を示すような「err / crit ...」等が記載されるならば
「^(err|crit|crit|alert|emerg)」のような形で。

トリガー設定画面には、実際に出力される文字列と
iregexp等のトリガー関数を用いた正規表現での記載との
マッチング状況をテストする機能もついていますし
「管理→一般設定→正規表現」側にもついていますので、
ご参考まで。

広瀬です

条件が3つありますが、整理しますとこんな感じでしょうか・・・

①err:~~エラーメッセージ~~
②err:~~interrupt含む~~
③~~interrupt含む~~

上記の内、③は除外対象としたい、という認識で良いでしょうか?
すこし解りづらいのは、②のパターンはerr:で始まるのかそうでないかです。
①②と③パターンなら非常に楽なのですが、②のパターン次第で表現が
異なってきそうです

ユーザー dondoc の写真

fripper様 wakaba様

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

表現に不明瞭な点がございましたこと、申し訳ありません。

エラーメッセージは全て障害検知としたいため、「err」を含むエラーメッセージは検知し、
メッセージに「interrupt」などの英単語に「err」が含むもののみについては検知しないようにしたいと考えております。

【例】
① 2017/06/26 07:34:07 1498430047 Jun 26 07:33:30 XXXXXXX 【ERR】: kernel: ACPI: Using IOAPIC for routing
※interruptを含まないエラーメッセージ
② 2017/06/26 07:34:07 1498430047 Jun 26 07:33:30 XXXXXXX 【ERR】:kernel: ACPI: Using IOAPIC for 【interrupt】 routing
※interruptを含むエラーメッセージ
③ 2017/06/26 07:34:07 1498430047 Jun 26 07:33:30 XXXXXXX kernel: ACPI: Using IOAPIC for 【interrupt】 routing
※interruptのみ含むメッセージ

①と②については障害検知し、③については検知しないようにし、
「err」の文字は先頭とは限らず、エラーメッセージの中身に含まれていた場合検知したいと考えております。

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

広瀬です。

先頭で始まらないというだけならば、前後の文字(空白も)含めてしまえば良いと思います。

①『err』だけだと、当然interrauptやpreferred、referrerなんぞも引っかかりますね

②『" err "』のように、前後に空白が含められる余地があれば、それごと文字列とすれば、上記のパターンには引っかかりません
これは、grepでやる場合も同じです。 grep " err " | /var/log/messagesでやってみてください。少なくともinterruptなどは引っかかりません

 ※正規表現に記載する場合は、ダブルクォートはいりません。前後にスペース入れるだけで良いです。
  ただし、パッと見がすこぶる解りにくくなります。

dondocさんの示されたパターンなら、errの最後に必ずかどうか解りませんが、『:』(セミコロン)があるようにみえますけど、
それを含めてしまえば如何でしょうか?その場合はスペース入れる必要はありませんね。