logrtアイテム使用時の0バイトファイルの取り扱いについて
zabbix2.0.11 agent2.0.6を使用しています。
アイテム(zabbix-agent(アクティブ))
logrt["/hoge/huga/ABC01_[0-9]{14}.err"]
該当するログは1日1回のみ出力されるタイミング以外は変更されまず、また、システムエラーを出力するログとなっており、基本的には0バイトです。
想定では1日1回の出力タイミングで何かエラーが出力された場合(0バイトではないファイルが生成された場合)のみ、zabbixサーバに結果が通知される事を想定して設定しました。
logrtは該当する最新のファイルが監視対象になると認識していましたが、過去エラーがあった時点での0バイトではないログ監視結果として出力されてしまいました。
さらに、zabbixサーバに通知される最新のチェック時刻が1日1回に出力されるタイミングではなく、不定期のタイミングで出力されます。
原因として何が考えれらるでしょうか。
zinten - 投稿数: 69
ikemoさん
はじめまして。
以下で報告されているバグに当たらないでしょうか。
https://support.zabbix.com/browse/ZBX-7098
logrtはmtimeとファイル名を元に読み込むファイルを選択しています。
ローテーションの設定にもよるかもしれませんが
ローテーションとファイルに文字が書かれるタイミングが重なるなどすると
ローテーション前のファイルと新しく作られたファイルのmtimeが同じになる場合があります。
mtimeが同じ場合はファイル名が若いものが選択されます。
logfile.1 mtime=2014/04/17 03:00:00 size=100byte
logfile mtime=2014/04/17 03:00:00 size= 0byte ←①このファイルが読まれる
その後新しいファイルに書き込みがありファイルのmtimeが変わった後の監視タイミングで
最後に確認したmtime以降のファイルが選択されます。
その際に古いファイルが監視の対象となり古いファイルが読み込まれてしまいます。
logfile.1 mtime=2014/04/17 03:00:00 size=100byte ←②まずこのファイルが読み込まれる
logfile mtime=2014/04/17 08:00:00 size= 50byte ←③②を読み終わった後にこのファイルが読み込まれる
最後に確認したmtime「以降」のファイルが選択されるため古いファイルが読み込まれる可能性があります。
heya - 投稿数: 319
こんにちは。
「logrtアイテム使用時の0バイトファイルの取り扱いについて」というトピック名とはずれますが・・・。
ファイルサイズが 0 かどうかだけでよければ、vfs.file.size を使って「値が 0 以外」という条件にするのはどうでしょうか。それか、そのときのファイルの中身も知りたいのであれば vfs.file.contents を使って「値が "" 以外」という条件にするとか。
>さらに、zabbixサーバに通知される最新のチェック時刻が
>1日1回に出力されるタイミングではなく、不定期のタイミングで出力されます。
zabbix では「何時何分に値を取得」というのはできないので、更新間隔を一日とすると、変化があってから長くても一日経過するまでの間には気づく、ということになります。(通信量が増えるのを覚悟で)更新間隔を1秒にすれば、変化があってからすぐに気づけるようになると思います。
KAZ - 投稿数: 1085
ikemoさん
アイテムの収集タイミングと検知のタイミングは一緒じゃありません。
アイテムの更新間隔が1日となっているなら、前回の取得間隔から1日たてばZabbixエージェントが情報を収集し、Zaqbbixサーバに情報を送信します。
※:logrtなので監視はZabbixエージェント(アクティブ)ですよね?
トリガーは30秒周期でデータをチェックしていて、チェック時点から指定時間をさかのぼってデータを確認します。
上記を踏まえた上で、どのようなタイミングでログが出力されて、どのようなトリガーを設定して、どのような検知をしたか詳細を書いてくれると切り分けがつくかなと…A(^^;
ちなみにログの出力ですが、CentOS6系でcronのdaily使ってませんよね?
CentOS6系でnonanacron使ってないcronのdailyはタイミング一定にならない可能性が…A(^^;