正規表現を利用したトリガー設定が動作しない
お世話になります。
下記の正規表現を利用したトリガーがうまく作動しなくて困っております。
ZABBIXサーバ:2.4.1
※クライアントも同じバージョン
アイテムキー
logrt[/tmp/logs/log$,@tmp_count]
トリガー
({hogehoge01:logrt[/tmp/logs/log$,@tmp_count].count(300,@tmp_count)}>2) and (({hogehoge01:logrt[/tmp/logs/log$,@tmp_count].nodata(60)})=0)
こちらのトリガーは5分以内に/tmp/logs/yyyymmdd.log内に@tmp_count(正規表現)に
登録した文字列を3回以上検知したらトリガーを実行するために作成したのですが上手くいきません。
以下のように@tmp_count(正規表現)を利用しない場合だとうまく動作致します。
アイテムキー
logrt[/tmp/logs/log$,error]
トリガー
({hogehoge01:logrt[/tmp/logs/log$,error].count(300,error)}>2) and (({hogehoge01:logrt[/tmp/logs/log$,error].nodata(60)})=0)
@tmp_count(正規表現)には以下を登録しております。
条件式:error
条件式の形式:文字列が含まれる
大文字小文字を区別:しない
error以外の文字列も複数検知するようにしたいと思い、正規表現を利用したいと思っております。
よろしくお願い致します。
fripper - 投稿数: 495
正常に動作しない原因はトリガーの設定内、count 関数の使い方だと思われます
https://www.zabbix.com/documentation/2.4/manual/appendix/triggers/functions
マニュアルを見る限り、count の引数2つめは int/float の指定のみ対応している様子で、
アイテムキーが整数型や浮動小数点型の場合には利用できるはずですが
テキスト型やログ型のような文字列アイテムの場合には非対応のようです
アイテムキー側には正規表現を指定したままにして、
count 関数でのパターン指定は、無し、にするでどうでしょうか?
({hogehoge01:logrt[/tmp/logs/log$,@tmp_count].count(300)}>2) and (({hogehoge01:logrt[/tmp/logs/log$,@tmp_count].nodata(60)})=0)
ログアイテムのアイテムキー側に正規表現を記載した場合、それに合致するデータのみが
アイテムの値として収集されます。
新たな値が収集された時点でトリガーが評価され、近隣300秒以内の収集値が3項目以上あれば障害になり
その後、nodata によって一定時間間隔に評価され、60秒以内の新たな収集値がなければ正常に戻る
というような動作をすることになるかと思います
Rogue - 投稿数: 8
ご確認、ご回答ありがとうございます。
教えて頂いた手順でうまくいきました。
そもそも、アイテムキーで正規表現を利用して対象を絞っておりましたので、
countの引数に同じ正規表現を指定する必要がなかったことに今気付きました。
無事問題が解決致しました。
ありがとうございました。