Zabbixサーバー再起動時のログ監視

Zabbix-1.8.9 でログ監視をしようと検証しています。
Zabbixサーバーが OS ごと再起動した場合、ログを先頭から読み込み、
古いログにトリガーがひっかかってしまうような挙動に見えるのですが、
回避する方法はございませんでしょうか。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

Zabbixのログ監視では、ZabbixサーバをOSから再起動したとしても、
監視対象のログファイル毎に、ログファイルのタイムスタンプや、
読み込んだファイルの位置までDBMS上に保存しているので、通常で
あれば、以前読み込んだ次の文字から読み込むようになっています。

例外としては、以前読み込んだ位置よりもファイルサイズが小さい
場合は、新規に新しくログファイルが作成されたと判断して、ファ
イルの最初から読み込みなおします。

あとは、logrt[]を利用されている場合は、同じディレクトリ内で、
指定したファイル名のパターンに該当するすべてのファイルのタイ
ムスタンプをチェックして、以前チェックしたときよりも新しいも
のに関しては、新しいファイルだと判定されて頭から読み込むよう
になっていたと思います。

例えば、OS再起動時にアプリケーションなどで独自のファイルのロ
ーテーションを行って、ファイルのタイムスタンプが変わってしま
うようなものであったりすると問題が発生するかもしれません。

ログ監視のアイテムの設定はどのようにされてますでしょうか?

もし、logrt[]を利用されている場合は、対象のログファイルのフ
ァイル名がどのような命名規則で生成されるようになっているのか
教えて頂けませんでしょうか?
あと先に書かせて頂いたようなファイルのタイムスタンプが変更さ
れるような状況が発生するようなログファイルであるかもご確認頂
けませんでしょうか?

ユーザー yanta1 の写真

回答ありがとうございます。

ZabbixサーバーとZabbixエージェントが同一ホストなのですが、
ログを先頭から読み込む現象が発生するのはZabbixエージェントの再起動でした。

**アイテム
キー: log[/tmp/testlog,"Failed","UTF-8",]

**トリガー
条件式: (({HOST:log[/tmp/testlog,"Failed","UTF-8",].regexp(Failed)})#0)
イベント生成: ノーマル

トリガーで障害検知し、zabbix_sender を実行して正常に戻すことを考えています。
zabbix-agent を2度再起動すると、ヒストリは以下のようになります。

タイムスタンプ ローカル時間 値
[2012.1月.13 16:46:01] - 2012/01/13 16:38:55 Failed
[2012.1月.13 16:46:01] - 2012/01/13 16:30:40 Failed
[2012.1月.13 16:45:21] - 2012/01/13 16:45:21 RECOVERED
[2012.1月.13 16:43:48] - 2012/01/13 16:38:55 Failed
[2012.1月.13 16:43:48] - 2012/01/13 16:30:40 Failed
[2012.1月.13 16:42:44] - 2012/01/13 16:42:44 RECOVERED
[2012.1月.13 16:40:53] - 2012/01/13 16:38:55 Failed
[2012.1月.13 16:40:53] - 2012/01/13 16:30:40 Failed

"RECOVERED" は zabbix_sender で送ったものです。
値の日時文字列を見てもらうとわかると思いますが、Failed の2行が
zabbix-agent 再起動のたびに読み込まれています。

ユーザー TNK の写真

デバッグログで確認してみましたが、zabbix_senderを利用して登
録されているキーに値を送った後で、zabbix_agentdを再起動する
と、zabbix_agentdがzabbix_serverからアクティブチェックのリス
トを受け取る部分でlastlogsizeというどこまでログファイルを読
んだかを示す値が0になってしまっているように見受けられます。

このため、ログファイルが頭から再度読み込まれてしまっているよ
うです。

考えられる原因としては、zabbix_senderを利用してZabbixサーバ
に送り込んだ際にlastlogsizeを指定して渡せていないので、該当
するログ監視のアイテムのキーに対するlastlogsizeが0に初期化さ
れてしまっていることが考えられます。

zabbix_senderでZabbixサーバにエラーリセット用の値を送った後
でもlastlogsizeがクリアされないようにできないかもうちょっと
調べてみます。

とりあえず現時点では、zabbix_agentdの再起動だけであれば、再
起動を行っても再度ファイルの頭から読み込まれることはないよう
ですので、zabbix_agentdもしくはサーバ機自体の再起動が必要で
あるならば、再起動を行って正常確認が終わった後でzabbix_sender
を利用するようにしてみてはいかがでしょうか?

ユーザー yanta1 の写真

回答ありがとうございます。

zabbix_sender を使わずに、障害→正常を示す文字列を決めて、ログに追記するなどで対応しようと思います。