文字列Aを含む かつ 文字列Bを含まないといった条件のつくり方について
Zabbix 2.2.10
CentOS 6.6
やりたいこととしては、
文字列Aを含む かつ 文字列Bを含まない
といった設定を既存の正規表現に追加したいです。
※ERROR含む かつ test.shを含まない場合は偽にしたい。
正規表現は以下のようなものを使用し、
正規表現のテストでは結果が正しくなるのですが、実際のアイテムに設定すると値が取得されません。
※追加したのは、最後にある【|^(?=.*ERROR|[Ee]rror)(?!.*test\.sh).*$】です。
=====
結果が真
大文字小文字区別する
PANIC|[Pp]anic|ALERT|[Aa]lert|CRITICAL|[Cc]ritical|^(?=.*ERROR|[Ee]rror)(?!.*test\.sh).*$
正規表現のテスト結果は真になる
test ERROR
test PANIC
test PANIC test.sh
偽になる
test ERROR test.sh
=====
アイテム:log[/var/tmp/messages,@messages]
元の正規表現では実際のログファイルに「test PANIC」など書き込むと値が取得されるが、ERROR~の条件を追記すると何も取れなくなります。
正規表現のテストと実際にアイテムで動作するときでは、動作が異なるのでしょうか。
バグか仕様かわかりませんが、
文字列Aを含む かつ 文字列Bを含まないという正規表現はどのように作成すればよいのでしょうか。
■その他検証
文字列Aを含む かつ 文字列Bを含まない
の正規表現のみにしても、正規表現のテストは問題なくても
実際には値が取得できませんでした。
=====
結果が真
大文字小文字区別しない
^(?=.*ERROR)(?!.*test\.sh).*$
=====
Yasumi - 投稿数: 380
・環境について
Zabbix2.2.10はかなり古いので、最新の4.x系を新規構築することを推奨いたします。
・正規表現について
下記ならどうでしょうか。
PANIC|[Pp]anic|ALERT|[Aa]lert|CRITICAL|[Cc]ritical 真
ERROR|[Ee]rror 真
ERROR.*test.*sh 偽
Error.*test.*sh 偽
error.*test.*sh 偽
kasugai - 投稿数: 72
Yasumi 様
ありがとうございます。
正規表現を記載いただいた内容を少し変更したところ、意図した通りに動作致しました。
PANIC|[Pp]anic|ALERT|[Aa]lert|CRITICAL|[Cc]ritical|ERROR|[Ee]rror 真
ERROR.*test.*sh 偽
Error.*test.*sh 偽
error.*test.*sh 偽
※環境については古いのは認識しているのですが、事情がありアップデートできていません。