ログ監視(ActiveCheck)で、過去のログを再検知する

初めてお世話になります。

ログ監視(ActiveCheck)で監視設定をしていますが、新しいイベントが発生した際に
過去のログも再検知するという事象が、発生します。

※過去ログとは一度、検知したログになります。

アイテム、トリガーは下記の様式で記載しています。

アイテムキー: log[/var/log/messages,@X2_messages,EUC-JP]
データ型:    ログ
トリガー:  {mail:log[/var/log/messages,@X2_messages].regexp(@X2_mailonly)}=1

上記に合致するログが発生した際に、過去のログも検知する現象が発生します。
messagesは、ログローテーションされていますが、messagesX2_messages

この現象が起きる要因はありますでしょうか?
lastlogsizeがリセットされて先頭から、messagesファイルを読んでいる様です。

/var/log にはmessagesとmessages_dbgのファイルがあり、syslog.confで同じようにログを
出力されていることが分かりましたが、これは関係しますでしょうか?

なお、Agentの再起動やアイテムの変更はしていません。

=====
実行環境は以下になります。

Server: CentOS 6.4 / zabbix-server 2.2.5
Agent: Red Hat EL6 / zabbix-agent 2.2.5

コメント表示オプション

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

k2kさん


この現象が起きる要因はありますでしょうか?
lastlogsizeがリセットされて先頭から、messagesファイルを読んでいる様です。

今のところ2.2.4以降でログの2度読み関連で私が知っているのは下記の不具合です。
https://support.zabbix.com/browse/ZBX-8916
ZBX-8916はZabbixサーバ再起動で事象が発生します。
なので、今回の件に微妙該当していないと思います。


上記に合致するログが発生した際に、過去のログも検知する現象が発生します。
messagesは、ログローテーションされていますが、messagesX2_messages

ローテーション方法をお教えください。

ユーザー KAZ の写真

k2kさん

[https://support.zabbix.com/browse/ZBX-8916|https://support.zabbix.com/browse/ZBX-8916]
ですが、2.2.7rc2でfix予定です。

ユーザー k2k の写真

KAZ様

さっそくのご連絡ありがとうございます。

>ローテーション方法をお教えください。

messagesは、4世代でローテーションされています。また、サーバ管理者が、デバックファイルを別に付加させた
ファイルを近似したファイル名で個別に作成しております(以下)ので、同じタイムスタンプで、存在しています。

messages
messages.1
messages.2
messages.3
messages.4

messages_dbg
messages_dbg1
messages_dbg2
messages_dbg3
messages_dbg4

ファイルサイズは、messages_dbgの方が大きいですが、messagesのファイルと同じ内容(属性も同じ)
が含まれいます。この点は関係しますか?

messages_dbgを監視するか、あるいは、1つのフィイルに統一できないかはサーバ管理者に相談している
所です。

ユーザー TNK の写真

logrt[]を利用されている場合は、例えば、

 logrt[/var/log/messages]

と指定していた場合は、同じディレクトリにある「messages」で始まるファイルを
日付順で読み込んでしまいますので、ローテーションする際に、編集したりして
ファイルのタイムスタンプがずれて再読み込みしてしまう場合があります。

しかし、log[]を利用されているようですので、この問題ではないと思われます。

lastlogsizeがリセットされるとのことですが、これはどのようにして確認されましたか?
その時に何らかの操作を行われましたか?

例えば、zabbix_senderを利用して、障害ではない文字列を送り込んで、トリガーの障害
状態を復旧させるような使い方をされていたりしませんか?
zabbix_senderを利用してデータを送り込むと、lastlogsizeがクリアされるので、
ログファイルを最初から読み込み直したと思います。

ユーザー KAZ の写真

k2kさん

2.2.4からファイルのinodeを見るようになったのでファイルをどの様にローテーションしているのかが知りたかったのですが…
OS付属でcron.dailyのlogroateを使っていると言うことで良いですかね?A(^^;

で、どの様な感じで2度読みになってますでしょうか?
簡単な例を教えてください。

ユーザー k2k の写真

KAZさん

返信ありがとうございます。
logroateはOS付属のものです。

2度読みの例は以下の感じで、1回目は正常ですが、
2回目は、1回目を読んで、そのあとに、エラーを取り込みします。

※トリガーは、正規表現(@X2_mailonly)で以下の文字列を含む形になります。
mail error HTTP Response.

1回目:
※正常

Oct 12 04:04:30 mail error HTTP Response.
Oct 12 04:10:32 mail error HTTP Response.
Oct 12 04:14:30 mail error HTTP Response.
Oct 12 04:20:32 mail error HTTP Response.
Oct 12 04:24:30 mail error HTTP Response.

2回目(再検知):

Oct 12 04:04:30 mail error HTTP Response.
Oct 12 04:10:32 mail error HTTP Response.
Oct 12 04:14:30 mail error HTTP Response.
Oct 12 04:20:32 mail error HTTP Response.
Oct 12 04:24:30 mail error HTTP Response.
Oct 16 01:01:15 mail error HTTP Response.
Oct 16 01:13:12 mail error HTTP Response.
Oct 16 01:14:20 mail error HTTP Response.
Oct 16 01:23:42 mail error HTTP Response.
Oct 16 01:26:30 mail error HTTP Response.

これは、ファイルの先頭から再読み込みをしていました。このあたりから前回の最終読み込み時を
忘れているとみています。
※lastlogsizeがリセットについては、あくまで、こちらの推測になり、操作は何もしていません。

ユーザー TNK の写真

あくまでも可能性としてですが、サーバ管理者が同じディレクトリ
内で作業されているとのことでしたので、/var/log/messagesも編集
して行を削除してしまったような際には、ログが最初から読み込まれ
る場合があります。

もう少し詳細に書かせて頂くと、アイテムのチェックでログを読み込
んだ際に、最後に読み込んだバイト数(ファイルの位置)を一緒に記録
するようになっているのですが、ファイルの一部が削除されてしまっ
た場合に、新たなログも追加されていなければ、ファイルサイズが小
さくなってしまいます。
そうすると、先に読み込んだ場所までシークできないということで、
新しく生成されたログファイルだと判断して、ログファイルを最初か
ら読み込みなおしたと思います。

ユーザー k2k の写真

TNKさん

連絡ありがとうございます。

仕組みの説明ありがとうございました。

messagesは編集はしていない様ですが、すべてのサーバでの問題ではない様ですので、
ログローテーションあたりを再度、確認してみます。