kubernetes Podログをlogrtで監視する際に過去ログを拾ってしまう

■Zabbixバージョン
Zabbix-server:5.0.21
Zabbix-agent2:5.0.21 (OS:ubuntu 20.04)

■質問
logrtを用いてpodのログを監視している方で以下事象にあった方がいれば解決策を伺いたいです。
ホスト(ubuntu VM)の /var/log/pods/namespace_deployment/container/x.log (xは任意の数字)をlogrtで監視時に突然過去ログを拾ってしまう事象。

■logrt item 設定内容
logrt[{#LOG_DIR_PATH1}/\d+\.log,""\""log\"":(.*),\""stream"",,1000,skip,\1]
item収集間隔は3sec
※LOG_DIR_PATH1は自作LLDで /var/log/pods/namespace_deployment/container/x.log を拾うようになっております

■agent2設定
BufferSize=8000 (65535でも本事象発生しております)

■その他わかっていること
・kubernetesの仕組み上、/var/log/pods/namespace_deployment/container/x.log は /var/lib/docker/containers/xxxxx/xxxxx-json.log へのシンボリックリンク
・事象発生時にPod/コンテナともに再起動は起こっていないためログファイルの再作成やローテートは起こっていないと思われる
・ /var/log/pods/namespace_deployment/container/x.log のログのタイムスタンプは正常(タイムスタンプ順にログが格納されている)
・zabbix-server2台それぞれに同じlogrt item設定をいれているがどちらのserverでも同じ事象が見受けられた(ただし発生タイミングが数時間レベルで異なる)
・zabbix-server再構築したが同じ事象が発生した

コメント表示オプション

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

ロギングドライバを使用して、Zabbixが対応していそうな通常のフ
ァイルへの追記型の出力方法に変更してみてはいかがでしょうか?
http://docs.docker.jp/v19.03/config/container/logging/configure.html
k8sだとこの方法使えないのでしょうか?

ユーザー masakd の写真

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

k8s+docker利用時の場合、
podのログはdockerコンテナログのシンボリックなってしまうため、
ロギングドライバを変えられる箇所はdockerのみになりそうです。
※こちら都合で申し訳ございませんがdocker設定変更は少々時間を要しそうです

引き続き調査したところ、
logrt itemが以下状態では過去ログ事象発生していないことがわかりました。
logrt[{#LOG_DIR_PATH1}/\d+\.log,""\""log\"":(.*),\""stream"",,,skip,\1]
item収集間隔は10sec

zabbix-server高負荷によりserver側で持つlastlogsizeの値がおかしくなった可能性も含めて引き続き調査しようと思います。

ユーザー masakd の写真

引き続き調査した結果、
mtimeが更新&ファイルサイズは変わらずの条件でログファイルが新しいものとみなされている可能性が高いことがわかりました。
理由:
・ログ出力頻度が異なるPodを何パターンが用意し検証したところ毎秒ログを出すPodでは事象は確認できなかった。
・ログ出力頻度が多いPodより少ないPodの方が事象発生しやすかった。
・item収集間隔を3sec=>10secにすると事象発生しなくなった。
・事象発生時にzabbix-agentで以下のログが見られた
  ・2022/04/18 21:00:32.002881 after changing modification time the size of log file "/var/log/pods/xxxx/xxxx/0.log" still has not been updated, consider it to be a new file
  ・2022/04/18 21:00:32.003585 after changing modification time the size of log file "/var/log/pods/xxxx/xxxx/0.log" still has not been updated, consider it to be a new file

logrt[]のアイテムキーの第8引数(optionsの項目)に「mtime-noreread」にしてみて引き続き様子を見てみたいと思います。

※k8sかdocker側の仕様だと思いますが、なぜmtimeのみ更新されるのかはまだわかっておりません。