ログ監視の正規表現255文字制限の代替案2

----------------------------------------
□バージョン
2.4.4
----------------------------------------

■やりたい事
特定文字列の除外設定を255文字以上追加したい。

具体的な例を下記に記載しますと、
Doubutsuという文字列を監視したい。
ただし、usagi,hiyoko,neko,xxxx(255文字以上)は除外したい。

■現状の状況
除外設定が255文字以上存在してしまう為、
アイテムを複数作り、トリガーをandで結合すれば想定の動作をする
と思ったのですが、どちらか片方のアイテム条件に引っかかると
イベントとして表示してしまいます。

つまり or のような動作をしてしまいます。

http://www.zabbix.jp/node/3971
上記を参考に頑張って設定をしているのですが、
想定の動作をしてくれません。

■現状設定■
□アイテム
logrt[/var/log/messages,@Doubutu01,,,skip]
logrt[/var/log/messages,@Doubutu02,,,skip]

□トリガー
logrt[/var/log/messages,@Doubutu01,,,skip].regexp(*)}=0 and
logrt[/var/log/messages,@Doubutu02,,,skip].regexp(*)}=0

□正規表現1
・名前1
Doubutu01

・条件式1
1>Doubutu [結果が真]
2>usagi|hiyoko|neko [結果が偽]

□正規表現2
・名前2
Doubutu02

・条件式2
1>Doubutu [結果が真]
2>kirinn|raion|zou [結果が偽]

----------------------------------------

何がいい案があれば教えて頂けないでしょうか?

コメント表示オプション

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

確認ですが、上の例だと Doubutu を含みつつ、usagi, hiyoko, neko, kirinn, raion, zou のどれも含まないものが来たら障害、としたいのですか?(実際はもっと数が多くて | でつなげると 255 文字超える、ということですよね?)

そうであれば、正規表現は一つでよく、
名前:Doubutu
条件式:
1>Doubutu [結果が真]
2>usagi|hiyoko|neko [結果が偽]
3>kirinn|raion|zou [結果が偽]
として、アイテムとトリガーは
アイテム logrt[/var/log/messages,@Doubutu,,,skip]
トリガー {logrt[/var/log/messages,@Doubutu,,,skip].regexp(.)}=1
だけでいいと思います。

正規表現の条件式の書き方は好みにもよりますが、上に書いた以外にも
1>Doubutu [結果が真]
2>usagi [結果が偽]
3>hiyoko [結果が偽]
・・・
7>zou [結果が偽]
のようにたくさん並べて書く方法もあります。
また、一つ一つが正規表現である必要が無いなら、Doubutu については [文字列が含まれる]、それ以外の除外対象については [文字列が含まれない] にするといいです。文字列比較の方が正規表現のパターンマッチより速いし負荷も少ないと思うので(差は微々たるものかもしれませんが)。

余談ですが、* 一文字(regexp のパラメーター)というのは、正規表現として変です。おそらく . か .* の間違いじゃないかと。

heyaさん

実現したい事が出来ました!!
ありがとうございます、素晴らしいです!

余談ですが、正規表現の行数限界は198が限界でした。
198以上追加すると、勝手に198以降が消されました、、、

ユーザー heya の写真

>余談ですが、正規表現の行数限界は198が限界でした。
>198以上追加すると、勝手に198以降が消されました、、、

そうなんですか。そういうことなら適当に | でつなげざるを得ないでしょうね。
#以前は400個ぐらい登録できていたんですが(バージョンは 2.0.x)、2.2 か 2.4 辺りで制限がついたのかな・・・。

ユーザー fripper の写真

上限があるのは、Apache/PHP側のPOST送信データサイズ制限かもしれません‥