同時に複数行が記録される際のログファイル監視について
はじめまして。
いつも参考にさせていただいています。
ログファイルの監視について分からないことがあり、質問させてください。
■環境
ZABBIXのバージョン:zabbix-1.8.4-1.JPから1.8.11-1.JPにバージョンアップしています
■アイテム設定
・タイプ: ZABBIX agent (アクティブ)
・キー: log[/var/log/messages]
・データ型: ログ
・更新間隔: 1秒
・ログ時間の形式: 空白
・アプリケーション: -
■トリガーの設定
{ホスト名:log[/var/log/messages].iregexp("error")}=1
■やりたいこと
ログファイルにトリガーで指定したキーワードが含まれている行をアクションでスクリプト渡す。
■状況
ログに同時に複数行が書き込まれた場合、それぞれの行は最新データから確認でき、
イベントも発生するのですが、イベントに対応したアクションで取得できる行が
最新の行しか取得できず、困っています。
例えば、
Apr 28 12:00:00 test-server test: Error 1
Apr 28 12:00:00 test-server test: Warn 2
Apr 28 12:00:00 test-server test: Error 3
Apr 28 12:00:00 test-server test: Info 4
というテキストがログに書き込まれた場合、1行目、3行目に対してイベントが発生し、アクションが起動されますが、
{ITEM.VALUE}で取得できるのは最新の行である"Apr 28 12:00:00 test-server test: Info 4"しか取得できません。
1.8.4-1.JPで確認していた際には取得できていたのですが、1.8.11-1.JPにバージョンアップした為か、いつのまにか上記のような状況となっていました。
■質問
質問としては、以下です。
1.logキーでの{ITEM.VALUE}と{ITEM.LASTVALUE}の違いは何でしょうか?
上記の状況に気づくまでは1行目、3行目のときにも最新の4行目を取得したい場合に{ITEM.LASTVALUE}を使うものと思っておりましたが、Zabbixマニュアルを参照すると「アイテムの最新の値」とあり、違いが良く分からなくなってしまいました。
2.上記の状況はZabbixとしては正しい動きなのでしょうか?
その場合、上記の「やりたいこと」を実現するために良い方法は何か無いでしょうか?
長文となってしまいましたが、以上、よろしくお願いいたします。
TNK - 投稿数: 4671
{ITEM.VALUE}は、トリガーが発生した時の対象のアイテムの値で、
{ITEM.LASTVALUE}は、そのアイテムに対する最新の値です。
トリガーが発生したときの値を取得するには、{ITEM.VALUE}を利用
した方が良いと思います。
しかし、今回の短時間に多くのログが出力され、トリガーによって検出
された場合、1.8.xでは、アクション処理時に展開された値が、ほぼ同
時刻に取得されたアイテムの最新値になってしまう場合があります。
この問題は、次のバージョンである2.0で解消される予定です。
1.8を利用する場合は、何個か前のアイテムもアクションから送るように
するなど、前後のログも確認して判断する必要があると思います。
eter - 投稿数: 2
コメントありがとうございます。
イベントに対応したアイテムの値を取り出したいときには{ITEM.VALUE}を使うのは正しいけれど、
1.8系ではアクション処理時の展開で最新の値が展開されてしまうことがあるのですね。
>1.8を利用する場合は、何個か前のアイテムもアクションから送るように
>するなど、前後のログも確認して判断する必要があると思います。
こちらですが、具体的には皆様どのように設定されているのでしょうか?
# トリガーの条件でITEMを複数並べることによりアクションに渡すということでしょうか?