ログ監視不可が多発することについて

フォーラムへの投稿は初めてとなります。
よろしくお願い致します。

以下、本事象が発生している環境となります。
■環境
<監視サーバ(Zabbixサーバ)>
・OS:Red Hat Enterprise Linux 5.4
・zabbixサーバ:1.8.3

<監視対象サーバ>
・OS:Red Hat Enterprise Linux 5.4
・監視項目:ログ監視(5分間隔)
 ※アイテムキー:logrtを使用して特定文字列を監視
・監視対象ログ:/var/log/maillog*
 ※実際のログは容量ローテーションで30世代保存しています。

現在、監視サーバにて監視対象サーバのログ監視を実施しておりますが、
ログ監視のアイテムのステータスが「監視不可」となってしまい、
そのまま監視が出来なくなるケースが多発しています。

監視対象のログはメール配送ログであり、メール配送が頻繁に行われる時間帯は
ログの記録量が大幅に増大します。
現在のログローテーションの設定は、一定容量に達した際にローテーションする
仕組みとなっており、ピーク時は1分程度でログがローテーションされています。
アイテムが監視不可ステータスとなる時はほとんどがピーク時に発生しています。

そのため、本事象について推測ですが、ログローテーションが行われる
タイミングで監視を行ってしまうと、監視不可のステータスになってしまうのでは
ないかと考えています。

また、監視不可のステータスになったとしても、次回監視時に対象ログファイルが
存在すれば、自動的に監視が再開されるものと考えておりますが、本事象では
手動でステータスを変更しない限り、ステータスが元に戻らない状態です。

同様の事象が発生している方はいらっしゃいますでしょうか。
ログローテーションの間隔が長くなるように設定を変更すれば、事象は改善されると
思われますが、そのほかの改善方法をご存じの方がいらっしゃいましたら、
方法についてご教示ください。

以上よろしくお願い致します。

コメント表示オプション

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

ローテートした後のログファイルを圧縮されたりしてないでしょうか?

logrtキーを利用されている場合は1つ前のログファイルも読みにいきますので、少なくとも1つ前のログファイルは圧縮を行わないようにしてください。

ユーザー tanaka の写真

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

現在ログファイルの圧縮はしておりません。

現在のログ監視間隔を5分に設定しておりますが、5分以内に2回以上のローテーションがあった場合、2つ以上前のログファイルは読みにいけないのでしょうか?

現在アイテムキーの指定に正規表現を使っているのですが、指定の仕方で2つ以上前のログファイルを読みに行くことは出来るようになるのでしょうか?

<設定例>
logrt[/var/log/messages.*,ERROR,,]
上記の場合はmessagesログ全てを読みに行くことを想定しており、検証環境ではログを取得できているように見えたのですが、如何でしょうか?

ユーザー kodai の写真

すいません、「1つ前」は間違いですね。前回の監視で読み終わったところから読むような動作をしますので、監視間隔内で2世代以上ローテーションがあった場合でも、2つ以上前のファイルから読んでくれます。

ご参考までに、logrtの動作の詳細です。
http://kodai74.blogspot.com/2012/02/zabbixloglogrt.html

ログの監視の場合は監視間隔を1秒に設定された方が良いと思います。特に大量のログがある場合は1回の監視で送付するログの量が多くなるよりは、細かく頻繁に送った方がDBの瞬間的な負荷も下がります。

なぜ「取得不可」のステータスになってしまうのかは分かりませんが、Zabbixのログ監視では

- エージェントがサーバにログを送る
- サーバがログをDBに保存する
- データが保存し終わるとエージェントにレスポンスを返す
- エージェントがレスポンスを受け取る

までの一連の処理がzabbix_agentd.confのTimeout設定の秒数以内に終了する必要があります。大量のログがある場合、dbへの保存処理に時間がかかりタイムアウトしてしまっているのかもしれません。

Zabbixサーバ側、エージェント側のログには何か関連しそうはログは出力されていないでしょうか?

ユーザー tanaka の写真

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

Zabbixサーバ側のログ「zabbix_server.log」とZabbixエージェント側のログ
「zabbix_agent.log」を確認致しました。

Zabbixサーバ側のログ「zabbix_server.log」で、タイムアウト等のメッセージは検知されておりませんでした。

Zabbixエージェント側のログ「zabbix_agent.log」では、以下のメッセージ検知が検知されておりました。
(検知メッセージ※一部メッセージを抜粋※)
4256:20120223:100741.020 cannot stat [/var/log/maillog.log.3]: [2] No such file or directory
4256:20120223:100741.020 Active check
[logrt[/var/log/maillog.*,@ITEM_LogFile|/var/log/maillog.log*,,]] is not supported. Disabled.
※他メッセージはZabbixエージェント側のログzabbix_agent.log」に出力されておりませんでした。

そこで、以下の通りご質問させていただきたい内容を記載致しましたので、ご回答をお願致します。

【質問内容】
?上記の検知メッセージが起因して、Zabbixサーバ側にて監視不可
(Items_Unsupported)のステータスが出力されるのでしょうか?

?上記の検知メッセージが出力される原因として、
ログローテーションの頻度が高いことが原因と考えておりますが、相違ないでしょうか?

※上記の検知メッセージを見る限り、Zabbixエージェントからzabbixサーバにログを送れていないように見えます。

以上、よろしくお願い致します。

ユーザー kodai の写真

?上記の検知メッセージが起因して、Zabbixサーバ側にて監視不可
)Items_Unsupported)のステータスが出力されるのでしょうか?

そうだと思います。maillog.log.3のファイルが何らかの原因で一時的に存在しなかったのだと思います。

?上記の検知メッセージが出力される原因として、
ログローテーションの頻度が高いことが原因と考えておりますが、相違ないでしょうか?

今ある情報からでは「分からない」としか言えないです。
ログからは一時的にmaillog.log.3のファイルが存在しなかったことしか分かりません。
/etc/logrotate.confなどの設定から、ローテーション時のログファイルの動きを調べられてみてはどうでしょうか?

ユーザー tanaka の写真

本件について、ログのローテーションについての動作を確認しようと試みましたが、アプリ固有の設定であったため、
ローテーション時にどのような動作をしているかの詳細までは分かりませんでした。

しかしながら、ローテーション間隔を伸ばしたところ、監視不可ステータスが頻発する現象は発生しなくなりました。
結果から推測するに、ログ監視の実行中にローテーションが行われ、ファイルが行方不明になって監視不可ステータスとなってしまっていたものと思われます。
(少ログファイル容量でのローテーションを定義していたため、アプリ動作が多い際は1分程度でのローテーションが行われていました。それを1時間毎のローテーションに変更しました。)

また、ご教示頂いたログ監視の間隔についても変更を検討したいと思います。(現在5分毎の監視インターバルを1分毎に変更予定)
ご協力頂きありがとうございました。

ユーザー kodai の写真

これまでの経験上、アプリ固有のログローテーションは問題が出やすいですね。ログローテーションの動きにも色々ありますので、ログローテーション中に一瞬ファイルがない状態があるのかもしれません。

また、ご教示頂いたログ監視の間隔についても変更を検討したいと思います。(現在5分毎の監視インターバルを1分毎に変更予定)

1分ではなく1"秒"です。ログ監視の場合、監視間隔を短くしても監視の処理の負荷はあまり変わらないので、できるだけ短くしておいた方が問題が出にくいですし、よりリアルタイムに監視できます。