トリガー条件式への正規表現登録について

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

トリガー条件式への正規表現登録について質問させていただきます。

トリガー関数で、複数の正規表現を設定したいと考えております。
現状は、以下のような設定をしております。

【現在の条件式】
{テンプレート名:キー,@正規表現①].iregexp(@正規表現①)}=1 and {テンプレート名:キー,@正規表現①].iregexp(@正規表現②)}=0 and {テンプレート名:キー,@正規表現①].iregexp(@正規表現③)}=0

【やりたこと】
・収集したログに対して、正規表現②と正規表現③で登録した文字列を除き、正規表現①で登録した文字列を検知させる。
・なるべく条件式の量を少なくしたいと考えているため、正規表現②と正規表現③をまとめて記載したい。

なお、以下設定を試しましたが、思うようにな動作にはなりませんでした。

【試したこと】
①正規表現を複数指定、正規表現と文字列を指定
・{テンプレート名:キー,@正規表現①].iregexp(@正規表現①)}=1 and {テンプレート名:キー,@正規表現①].iregexp(@正規表現②|@正規表現③)}=0
・{テンプレート名:キー,@正規表現①].iregexp(@正規表現①)}=1 and {テンプレート名:キー,@正規表現①].iregexp(@正規表現②|aaa|bbb|ccc)}=0
※aaa/bbb/cccは特定の文字列となります
⇒除外対象として設定した正規表現や文字列がアラート通知され、検知対象として設定した正規表現もエラー通知される

・{テンプレート名:キー,@正規表現①].iregexp(@正規表現①)}=1 and {テンプレート名:キー,@正規表現①].iregexp("@正規表現②"|"@正規表現③")}=0
⇒トリガー登録時に書式に誤りがある旨のエラーが表示され登録できず

【やりたいこと】に記載した動作を実現させる方法がございましたら、ご教示くださいますようお願いいたします。

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

コメント表示オプション

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

広瀬です

正規表現へ登録する量次第ですが、多くなければ「結果が真」=正規表現①として、②、③は「結果が偽」に入れて
一つの正規表現にしてしまえば、事足りる様に思います。

■@正規表現A
1 » kernel. *(Warning|Error|Critical|Panic|Fatal|Failed|Failure) [結果が真]
2 » (UNEXP|MISS)        [結果が偽]
3 » (HOGE|HAGE|TAKO|IKA) [結果が偽]

■トリガー
{Template_Name:logrt[/path/to/^log.*$,"@正規表現A",,,,skip,]}.regexp(.*)=1

多くても正規表現の中は5~6個程度で基本何とかなります。キーワードが長い場合などの見やすさ優先ってだけ。
例えば、/var/log/messagesだとOS再起動直後は色々でますけど、uptimeアイテムの時間がある一定未満なら
無視って処理いれてしまえば、起動直後は無視してくれるのでわざわざ数多のフィルタ噛まさずとも事足ります。

ログ監視に総じて言えますが、厳密性を持たせようとすると破綻する事もあるので、ざっくりとした方がシンプル
だと思います。厳密性持たせたいならば、ログ出力自体を制御するなどログ側の制御も必要です。
例えば、/var/log/messagesにSNMPやFTP、NTPのログを出さないようにするなどですね。

ご参考までに。

ユーザー dondoc の写真

広瀬様

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

1つの正規表現に複数追加できることを認識しておりませんでした。
現状は、1つの正規表現に追加して対応したいと考えております。

また、正規表現の登録量が増えた場合等に、複数の正規表現(正規表現①、②、③)を作成した場合は、
iregexp(@正規表現②|@正規表現③)}=0のようには、トリガー条件式で2つの正規表現で除外設定ができないという認識でよろしかったでしょうか。

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

広瀬です

regexpの中に指定した正規表現フィルタをまるまる1つのフィルタ名として見ているためですかね。

「Cannot evaluate function "<ホスト名>:logrt["/path/to/log",warning].regexp(@ABC|@XYZ)": global regular expression "ABC|@XYZ" does not exist」

こんなエラーが出たんじゃ無いでしょうか?<式の長さによってはエラーが全部きれいに表示されません
出方が中途半端なので解りづらいですが、似たようなエラーは存在しない正規表現を登録した場合も出ます。

最初の@は正規表現のフラグとして扱うのえ、”ABC|@XYZ”が正規表現の名前としてみるので、
そんなものは無いとエラーを返してます。

・・・結論言いますと、出来ないと言わざるを得ません。エラーハンドリングして欲しいですね、これは<あと、マニュアル記載もあると尚良い

ユーザー dondoc の写真

広瀬様

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

広瀬様のご回答にいただきました同様のエラーが出力されております。

正規表現を複数指定することができないということわかりましたので、"and" でつなげて対処しようと思います。

以上、調査していただきありがとうございました。