ログ監視のアイテム取得時間のズレに関して

いつも参考にさせて頂いております。

ログ監視について質問させて頂きます。

現在、
以下の設定をしております。

zabbix-server バージョン : zabbix-server-1.8.11-1.el5.JP
zabbix-agent バージョン : zabbix-agent-1.8.4-2.el6.x86_64

アイテム: logrt[/var/log/messages*,"[wW][aA][rR][nN]"]
間隔 60秒

すると、以下のような取得状況となります。

取得時間          ログ内容(実際のログファイルに出力された行)
[2012.11月.26 13:47:07] - Nov 26 11:38:46 server2404 testd: [5191]: WARN: LOG1
[2012.11月.26 13:37:54] - Nov 26 11:27:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 13:32:38] - Nov 26 11:12:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 13:22:55] - Nov 26 10:57:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 12:37:55] - Nov 26 09:42:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 12:32:55] - Nov 26 09:38:44 server2404 testd: [5191]: WARN: LOG3
[2012.11月.26 12:27:04] - Nov 26 09:27:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 12:17:02] - Nov 26 09:12:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 12:07:55] - Nov 26 08:57:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 11:57:55] - Nov 26 08:42:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 11:47:38] - Nov 26 08:38:44 server2404 testd: [5191]: WARN: LOG3
[2012.11月.26 11:42:38] - Nov 26 08:27:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 11:32:55] - Nov 26 08:12:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 11:27:04] - Nov 26 07:57:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 11:22:38] - Nov 26 07:42:28 server2404 test2d: [5193]: WARN: LOG2
[2012.11月.26 11:12:04] - Nov 26 07:38:40 server2404 testd: [5191]: WARN: LOG3

上記のようにログの出力時間と検知時間に相当のズレが生じております。
ほとんど時間のズレがない時もあるのですが、長い時は上記よりもさらにズレが生じてしまいます。
該当ログの間に100行以上(かなり大量の)ログがあるのかと思いましたが、
だいたい700行くらいとなります。
agentd.confは
# MaxLinesPerSecond=100

となっておりますが、100行ずつにしてもかなりのズレが生じております。
こちら、解消する方法は御座いますでしょうか?

お知恵をお貸し頂ければと思います。

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

コメント表示オプション

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

一応、前提条件として確認させて頂きたいのですが、Zabbixサーバ
を稼動させているサーバと、監視対象のサーバとの時刻同期は行わ
れていますか?

各サーバの時刻同期が正常に行われているにも関わらず、そのよう
な時間のずれが発生してしまうのであれば、以下の原因が考えられ
ます。

 ・logrotate以外の方法を用いてlogのローテーションを行ってい
  る
 ・/var/logディレクトリにmessagesで始まるファイル名でローテ
  ーションされたログファイル以外のファイルをコピーして置い
  ている
 ・Zabbixのキューに溜まってしまって処理の遅れが発生している

/var/logディレクトリに、正規表現に合致するファイルを置いてお
いて、それを編集してファイルの変更時刻が変更されると、そのフ
ァイルも再読込対象になってしまい、過去に読み込んだログと同じ
ログを読み込んでしまう場合があります。

キューに関しては、Webフロントエンドの、

 管理 -> キュー

を開いて、遅延が発生していないかを確認してみていただけません
でしょうか。

ユーザー mori の写真

TNK様

ありがとう御座います。

時刻同期については正常に行われております。
※ちなみに、監視サーバをNTPサーバとしています。

 ・logrotate以外の方法を用いてlogのローテーションを行ってい
  る
   ⇒
    こちらについては、syslogを使用してログに出力しており、
    ログローテーションはCentOS標準のlogrotateを使用しています。そのため、毎週4時にローテーションされます。

 ・/var/logディレクトリにmessagesで始まるファイル名でローテ
  ーションされたログファイル以外のファイルをコピーして置い
  ている
   ⇒
    ls -l /var/log/messages* -h
     -rw-r--r-- 1 root root 28M 11月 28 15:28 2012 /var/log/messages
     -rw-r--r-- 1 root root 37M 11月 4 03:19 2012 /var/log/messages-20121104
     -rw-r--r-- 1 root root 38M 11月 11 03:14 2012 /var/log/messages-20121111
     -rw-r--r-- 1 root root 40M 11月 18 03:44 2012 /var/log/messages-20121118
     -rw-r--r-- 1 root root 55M 11月 25 03:33 2012 /var/log/messages-20121125

   のようになっているため、それ以外のファイルは御座いません。

 ・Zabbixのキューに溜まってしまって処理の遅れが発生している
   ⇒
    1秒あたりの監視項目数(Zabbixサーバの要求パフォーマンス)  92.64
    また、更新待ちについても、全ての値が0となっております。

 それ以外のアイテムの取得、トリガーによるメール送信も遅延していると言った事は発生していない状況となっております。

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

ユーザー mori の写真

いつも参考にさせて頂いております。

こちらの件ですが、何かいい方法はないでしょうか。

監視対象のサーバによって検知される時間にもかなりばらつきがあるようですが、
監視対象サーバのスペックはどれもあまり変わらず、
どちらかというとその間に出力される行数に関係があるようにも思えます。

というのも、
あるものは
1分間にログを数百行出すのに対し、
1分間にログを数十行ほどしか出さないようです。

こちらが問題である可能性は御座いますでしょうか?

ユーザー TNK の写真

最初のご質問内で記載頂いた「MaxLinesPerSecond」の値は調整さ
れていらっしゃいますか?

出力されるログがデフォルトの設定MaxLinesPerSecondの毎秒100行
よりも多いのであれば、それだけでログの遅延は発生しますし、大
量なログを処理するためにZabbixサーバやバックエンドのデータベ
ースの負荷が上昇して処理が遅延すれば、Zabbixサーバ全体として
処理し終えるまでの時間がのびてしまってログとのタイムスタンプ
のずれは発生しやすくなってしまうと思います。

負荷状況を考慮して、例えば、全てのログをZabbixで収集するので
はなく、キーワードを指定してZabbix側で収集するログをある程度
フィルタリングするのも対応策の1つだと思います。

ユーザー mori の写真

ご返信が遅れてしまい申し訳ございません。

MaxLinesPerSecondの変更を行いましたが改善されていないようですので
フィルタリングを検討してみます。

TNK様が仰っておりますフィルタリングですが、
アイテム: logrt[/var/log/messages*,"[wW][aA][rR][nN]"]
以外にもフィルタリングする方法があるのでしょうか?
該当のエラーメッセージ自体(LOG1やLOG2)をフィルタリングするという事でしょうか?

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