ログ監視の正規表現255文字制限の代替案
----------------------------------------
□バージョン
2.4.4
□アイテム
logrt[/var/log/messages,@MSG,,,skip]
□正規表現
・名前
MSG
・条件式
aaaaa|bbbbb|ccccc|ddddd|eeeee
・条件式の形式
結果が真
----------------------------------------
・やりたい事
条件式で書いたものをどれが一つでもマッチで検知したい。
つまり or で繋げたい。
・悩み
フィルタ条件がかなり多く、条件式の 255 文字制限に引っかかってしまう。
・教えてほしいこと
正規表現の条件式を工夫して短くする以外で、
いい方法ありませんでしょうか?
当方で思いつくのは、
同じようなアイテムと新しい正規表現をもう一つ作成して紐づけるぐらいしか思いつきません。
□アイテム
logrt[/var/log/messages,@MSG2,,,skip]
・正規表現(MSG2)
uuuuu|qqqqq|ccccc
正規表現以外の手法でもいいので、何がいい案があれば教えて頂きたく。
wakaba - 投稿数: 228
広瀬です
正規表現の一フィールドに全部並べようとしているように見受けられますが・・・
添付画像に示した通り、分割すれば良いのではないでしょうか?
はこり天使 - 投稿数: 10
広瀬さん
分割案ですが、各条件がandで判定されてしまいます。
1.aaaaa [結果が真]
2.bbbbb [結果が真]
aaaaabbbbb等の文字列でないと真になりません。
各条件をorで結合する方法はありますでしょうか?
fripper - 投稿数: 495
各条件の「結果が真」を「結果が偽」にすれば、「列挙したうちの1つでも含まれていれば」‥と
なるのではないでしょうか?
はこり天使 - 投稿数: 10
fripperさん
試してみました。
1.Failed|Degraded|Errors|Fatal|Critical|Majo [結果が偽]
2.usagi|kappa|hiyoko [結果が偽]
usagi -> 偽
usagi Failed -> 偽
AAAA -> 真
望む結果と逆の真・偽が出ました。
その為、上手く反転させれば望む結果は出そうですが分からず。
wakaba - 投稿数: 228
広瀬です
fripperさんの指摘の通り、全部「結果が偽」にした場合はand条件であっても有効なので、
指定した文字列が1つも存在しなければ、「真」で返すというパターンです。
※添付画像は試さずに適当に入れたので、申し訳ない。
はりこ天使さんの要望されているパターンとは逆の考えで、1つでも存在したら「真」を返す
方法ではありませんね。条件が多い場合に結構有効なんですが・・・
私でも『1つでも存在したら「真」を返す』のパターンで255の制限を超える場合だと、トリガー
で二重化程度しかちょっと思いつきません。お力になれず、申し訳ない。
mocha - 投稿数: 28
わたしがやったことあるのは トリガ内で複数の判定結果をorでつなげる作戦です
つまり 正規表現で
reg1 1: ~~ 結果が真
reg2 1: ~~ 結果が真
と定義したものを 1つのトリガ内で
アイテム.regexp(@reg1)=1 or アイテム.regexp(@reg2)=1 or ...
みたいな感じで評価してます
# 念のため 上記の式中の「or」でのつなげ方は 3.0以降のパターンです
# 2.2までは 「|」でつないでください
# 2.4は・・・どっちでしたっけ・・・
あとは はなから1つのトリガで表現しきるのをあきらめて 半分くらいずつ別々の正規表現&
トリガで評価 というのもやってます
効率は悪いですが 1つの正規表現にたくさん詰め込みすぎると どの条件でマッチしたかが
わからなくなりがちということもあって この方法も使ってます
ところで 上でfripperさんの提案されてる作戦は
reg3 1: ~~ 結果が偽
2: ~~ 結果が偽
と定義したものを
アイテム.regexp(@reg3)=0
で判定すれば期待の動作になる ということではないかと
式の解釈としては もともとの「どれかが存在している(正規表現の評価の結果) ということが
成立する(式の評価)」 を「どれも存在していない(正規表現の評価の結果) ということが成立
しない(式の評価)」と読み替える という感じです
wakaba - 投稿数: 228
ちょっと補足
『結果が偽』を並べた正規表現を評価するには、regexp関数の引数として指定の場合
にのみ、mochaさんの指摘通りに対応が可能だと思います。
※このパターンはlogrtであまりフィルタしない事が前提条件
ただし、logrtアイテムキーの引数として、@MSGを入れなければならないのであれば、
『結果が偽』を並べた正規表現は使えませんので、条件式連結パターン以外には難し
いかなと思います。
はこり天使 - 投稿数: 10
mochaさん
ありがとうございます。
>トリガーの連結案
試してみました。
or で動作したので、2.4は or な気がしました。
イベントの通知動作は問題ないですが、
そこからヒストリを辿ろうとすると、アイテム毎に分離してしまいますね、、、
それ以外は、goodでしたので、現状のzabbixだと、この案がいい気がしました。
>アイテム.regexp(@reg3)=0案
logrtで絞らない分、マッチしないものが正常としてイベントに通知されます。
ログ監視でこの動作はパンクしてしまうので、アイテム毎に分離の方が良さそうでした。