正規表現設定について(1.8.2)
お世話になっています。
RHEL5.4
zabbix1.8.2を使用しています。
ログ監視の正規表現について2点質問させてください。
<監視対象ログ>
↓のログを監視しておりログは日次でローテートします。
hoge.yyyymmdd
<トリガー設定>
{HOSTNAME:logrt[/opt/hoge/log/hoge.yyyymmdd,,,100].count(3600,error)}>0
【質問】
?.count(3600,error)であれば監視できますが、<スペース>E<スペース>という文字列も
監視したい場合どのように設定すればいいでしょうか。
ちなみに、全く関係のないEXECなどログの中で多数出力されます。countの中で正規表現が
使えないのでしょうか。
?1.8から独自に正規表現を設定できるようですが、
どの正規表現を使っても引っかからず困っています。
ExecのEではなく、<スペース>E<スペース>のEのみを引っ掛けるためには
どのような設定にすべきでしょうか。
(例)
201006213404 E TestExec.sh テストシェル実行 失敗
ちなみに以下のような正規表現を試しましたが駄目でした。
※テストボタンを押下しても結果が偽となります。
^[0-9].+ E
^[0-9].+ /s E /s
ちなみにテストで真となったのはただEと入力したときのみです。
Eのみ登録するとExecも引っかかります。
どなたかお分かりの方がいらっしゃったらお教えいただけないでしょうか。
TNK - 投稿数: 4740
実際に設定して確認していませんが、正規表現のパターンとして、
<code>
[ ]E[ ]
</code>
と指定してみてはいかがでしょうか?
zabieru - 投稿数: 4
返信ありがとうございます!
[] E []
[]E[]
[ ] E [ ]
全て試してみましたが駄目でした。
ほかにアイデアがありましたらお教えください。
KAZ - 投稿数: 1085
zabieruさん
「201006213404 E TestExec.sh テストシェル実行 失敗」を引っかければ良いなら、str( E )で引っかかりますが…A(^^;
↓これで動きましたよ。
<code>
Expression:{[i]ホスト名[/i]:log[[i]ファイルパス[/i]].str( E )}=1
</code>
zabieru - 投稿数: 4
返信ありがとうございます。
str( E )で取得すると、同じログファイルに正常なログ
が出力されると、トリガーのステータスが
PROBLEMとならずに正常に戻ってしまいます。
#1度エラーとなれば一定時間はトリガーのステータスを
PROBLEMとしておきたいです。
str( E )でこのような設定ができますでしょうか?
これまで私が設定してきたことを時系列に書くと
?str( E )では正常のログがはかれた場合トリガーのステータスが正常になる
?1時間前までさかのぼりエラー(E)を検知していたら継続してトリガーのステータスをPROBLE Mと表示させておくようにしたい。
【トリガーの設定】
{HOSTNAME:logrt[/opt/hoge/log/hoge.yyyymmdd,,,100].count(3600,[ ] E [ ])}>0
ですが、count関数のなかで[ ] E [ ]では引っかからず。。。
他の正規表現も引っかからず。。。
?それで、アイテムの設定を見直そうと思い、
以下のようにアイテム、トリガーを設定。
【アイテムの設定】
{HOSTNAME:logrt[/opt/hoge/log/hoge.yyyymmdd,@登録した正規表現,,100]
【トリガーの設定】
{HOSTNAME:logrt[/opt/hoge/log/hoge.yyyymmdd,,,100].count(3600)}>0
ですが、正規表現が登録できず。。。困りました。
なにかアイデアがあればお教えいただけないでしょうか。
KAZ - 投稿数: 1085
zabieruさん
戻りますね。A(^^;
nodata()を使ってみて下さい。
以下、未検証です。
1)" E "しかZabbixのデータに取り込まない。
<code>
logrt[/opt/hoge/log/hoge.yyyymmdd, E ,,100]
</code>
2)一定時間(1時間内)に" E "が出ていたらエラーにする
<code>
logrt[/opt/hoge/log/hoge.yyyymmdd, E ,,100].nodata(3600)#1
</code>
TNK - 投稿数: 4740
str()もregexp()も第二引数で秒数または個数を指定できるようですので、
<code>
{HOSTNAME:logrt[/opt/hoge/log/hoge.yyyymmdd,,,100].str( E ,3600)} = 1
</code>
とか指定してみては如何でしょうか?
http://www.zabbix.com/documentation/1.8/manual/config/triggers#trigger_functions
TNK - 投稿数: 4740
str()でできたんですね。orz
regexp()を使う場合は、以下のような感じでできると思います。
<code>
{ホスト名:log[ログファイル名].regexp("[[:space:]]E[[:space:]]")}=1
</code>