ログレコード監視の動作が不安定

テキストファイル(厳密にはCSVファイル)の監視を
していますが、監視アクションの挙動がうまくいくときと
いかないときがあり困っています。

検索文字正規表現: ^[^,]+,([^,]*,){2}9,.*
 (意味:4カラム目が9)

CSVレコード監視させ、4カラム目が9のときに「障害」とし
メールを発信するというものです。
イベント生成タイプは「ノーマル」です。
アクションとしてメール、リカバリありで設定しています。

■トリガ設定

{Template_TEST_Watcher:logrt["/home/TEST/csv/TEST/.*.csv",,"SHIFT_JIS",500].regexp(@正規表現TEST)}=1

■現象
 以下2レコードをもつCSVファイルがあるとします。
  10,20,30,0,10
  10,20,30,9,10
これをアイテムのCSVファイルとしてディレクトリ配置し
 監視を動かすと、「障害」を検知しメールが1件飛びます。

 次に、上記にそのCSVファイルを開いて2レコードを後ろに
 足して再保存後、以下のようにしてディレクトリ配置します。
  10,20,30,0,10
  10,20,30,9,10
  10,20,30,0,10
  10,20,30,9,10

 期待する動きとしては、追加した3,4レコード目のみ監視
 され、リカバリメール1件、再度「障害」メール1件が
 飛びますが、これがこのようにいく場合と、
 1レコード目から再度読み直して、復旧、障害メールがその数
 分飛ぶ場合があります。アイテムのヒストリをみると、うまく
 いく場合は3,4レコード目だけ上がりますが、だめな場合は
 1〜4レコードすべて出てきます。
 
 CSVファイルを修正するオペレーションは同じようにしている
 つもりですが、挙動が異なる場合があり原因が分からず困って
 います。

 どなたかご存じの方いらっしゃいましたらご教授お願いいたします。

コメント表示オプション

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

ログ監視は、ファイルのタイムスタンプやログファイルの読み込み
済み位置なども記録して監視しています。

そこで、同じファイルに対して行を削除して4行の状態から2行の状
態にするようなファイルサイズが削減される操作を行っている場合、
監視タイミングによっては、ログファイルの読み込み済み位置より
実際のログファイルのサイズが小さくなる場合があります。

Zabbix 1.8.5のソースを見ると、既に読み込んだファイルサイズよ
りもログファイルのサイズが小さい場合は、新規にログファイルが
作成しなおされ出力されたと判断して、ファイルの最初から読み込
みなおすようになっているようです。
# src/zabbix_agent/logfiles.c 参照

今回、4レコードまで読み進んだ状態のファイルの行を削除して2レ
コードの状態にするような操作されているのであれば、Zabbixがチ
ェックを行うタイミングによっては、そのCSVファイルを最初から
読み直してしまう可能性が考えられます。

ファイルを操作してログ監視で設定した間隔以上待ってから、レコ
ードを追加するようにしてみてください。
もしくは、ログファイルを追記し続けるような試験方法に変えてみ
てはいかがでしょうか。

ユーザー t-kmr の写真

早速のご回答、ありがとうございました。

仰るところの「監視のタイミング」という点について着目し、
アイテムの更新間隔を大きくしてテストしました。(10秒→90秒)
結論として、少ししか試していませんが現象は再現しなくなりました。

CSVファイルは別のサーバにあるため、Zabbixサーバへの
ファイルコピーに若干の時間を要しますが、元々の間隔の10秒の間にコピーと監視が同時に走り動作がおかしくなったと考えられます。

ヒントを与えていただきどうもありがとうございました。