ログ監視のアイテムの時間と比較するトリガー
お世話様です。
ログ監視にて、アイテム設定で時間に絞ったログを取得しています。
アイテム
キー
logrt["ログのパス","時間=",932]
取得できる値
時間=00:00:00
アイテムの「保存前処理」で「時間=」は削除しています。
ヒストリに保存される値
00:00:00
更新時間
1分
zabbix server ver 3.4
agent ver 2.4.4
取得したヒストリの時間とzabbix serverの時間が10分以上差があれば
障害を検知するトリガーを作成したいのですが、トリガーの設定はどのように
設定したらよいかご教示いただくことは可能でしょうか。
アイテムで「ログの時間の形式」の時間を取得する方法も考えたのですが、
恐らくログの先頭から日付が入っているもの意外は取得が難しい仕様だったので、
この方法は断念しました。
以上良い方法ご存知の方いましたら、宜しくお願い致します。
yk_taiko - 投稿数: 184
トリガーのtime関数が「HHMMSS」で返してくれるので、
アイテムの値を「HHMMSS」で取得するようにし、トリガー判定してはどうでしょうか。
https://www.zabbix.com/documentation/3.4/manual/appendix/triggers/functions
({logrt["ログのパス","時間=",932].time()}-{logrt["ログのパス","時間=",932].last()})>1000
younashi - 投稿数: 7
yk_taiko様
分かりやすくご回答頂きありがとうございました。
大変助かりました。
ご案内頂いた正規表現にログを加工し、
ご教示頂いたトリガーで試したところ問題なく意図する障害を検知できるようになりました。
質問に関しては、クローズでお願い致します。
バージョンが比較的新しめということもあり、正規表現の記述方法のドキュメントが足りなかったので苦戦しましたが、
以下のサイトが参考になりましたので、保存前処理に困った方は一度見てみると良いかもしれません。
http://unam.hatenadiary.jp/entry/2018/02/08/224848
heya - 投稿数: 319
細かい話ですが・・・
ログの方が Zabbix サーバーの時間より進んでいるときも反応させたいなら
{...time()}-{...last()}>1000 or {...last()}-{...time()}>1000
みたいにした方がいいと思います。
それとは別にちょっと気になったんですが、日をまたがったとき、大丈夫ですか?
time() が 235959 で last() が 000000 なら、人間が考えると差は 1 秒ですが、引き算したら 1000 (=10分)を超えます。
younashi - 投稿数: 7
heya様
ご返信ありがとうございます。
>それとは別にちょっと気になったんですが、日をまたがったとき、大丈夫ですか?
>time() が 235959 で last() が 000000 なら、人間が考えると差は 1 秒ですが、引き算したら 1000 (=10分)を超えます。
実は時間をまたぐ際、(00:00や01:00など)ご指摘の不具合で誤検知していました。
ジャスト00分に検知するので現在調査中でした。
トリガーの「条件式」の「テスト」でおっしゃられてる値差になっていたので、そもそもtimeで計算するとどのような計算式になるのか
よく分からなくて困っていました。
強引ですが、0時であれば「000000」を非監視設定を入れてみましたが、キーが正しいか不明ですが、
検知してしまいました。
検討中の対策方法
①対策した式を記載しクリアする
②2分間に2回以上検知した場合は障害とする
③00分の値だけ非監視にする
④その他
①であれば理想ですが、無理そうでしたら、②か③で対応するしかないと思ってます・・・
新しくフォーラムを立てたほうがよければ立てますが、関連性としてそのまま確認してよければ、
対策式についてお分かりの方いましたらご教示いただけますでしょうか。