私がやろうとしているのは、正規表現を使用して、SCOM UNIX ログ監視で特定のイベント (イベント コードなど) の抑制を実行することです。
式は次のとおりです。
((?i:warning)(?!(.*1222)|(.*1001)))
つまり、ログで「警告」を検索しますが、イベント 1222 または 1001 が行に存在する場合は一致しません。
ルールを作成するときに SCOM の組み込みのテスト機能を使用すると、サンプル ログを含むテストが期待どおりに返されますが、テスト行を UNIX ログに挿入すると、アラートが生成されません。
システム (RedHat 6 を実行している) で構文が受け入れられていない可能性があると思われます。これを正規表現ツールでテストしたところ、期待どおりに動作するようです。
サーバーでテストしようとすると、次のようになります。
[root@bld02 ~]# grep ((?i:warning)(?!(.*1222)|(.*1001))) /var/log/messages
-bash: !: event not found
[root@bld02 ~]# tail /var/log/messages
Nov 13 15:07:26 bld02 root: SCOM Test Warning Event ID 1001 Round 18
Nov 13 15:07:29 bld02 root: SCOM Test Warning Event ID 1000 Round 18
Nov 13 15:07:35 bld02 root: SCOM Test Warning Event ID 1002 Round 18
なので、2試合を予定しています。
正規表現は何ですか?次のような多くのバリエーションをテストしました:
.*((?i:warning)(?!(.*1222)|(.*1001))).*
、-Rn
オプションの使用、引用符の使用などですが、手動で実行すると一致するものはありません...何が欠けていますか?