Logstashのinputパラメータで start_position => beginning を指定している。
Logstash1回目の実行では全データを読み込んでるが、2回目の実行では読み込んでくれない。
本来であれば start_position => beginning を指定しているので2回目であっても最初から読み込んでくれるのでは?
結果
仕様解釈誤り
Logstashリファレンスによると
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html#plugins-inputs-file-start_position
[日本語訳]
start_position
このオプションは、ファイルが新しく、以前に見られなかった「最初の連絡」状況のみを変更します。つまり、Logstashによって読み取られたsincedbファイルに現在の位置が記録されていないファイルです。以前にファイルが表示されている場合、このオプションは効果がなく、sincedbファイルに記録されている位置が使用されます。
start_position
このオプションは、ファイルが新しく、以前に見られなかった「最初の連絡」状況のみを変更します。つまり、Logstashによって読み取られたsincedbファイルに現在の位置が記録されていないファイルです。以前にファイルが表示されている場合、このオプションは効果がなく、sincedbファイルに記録されている位置が使用されます。
つまりデータを読み込むとsincedbに位置情報が書き込まれる。
2回目以降の読み込みでは、すでにsincedbに前回の位置情報が書き込まれているため start_position のパラメータは参照されない
対処
sincedbに書き込まないように設定
sincedb_path => "NULL"
※ネット情報では sincedb_path => "/dev/null" を書き込むような記事が見つかるがWindowsではエラーとなるため "NUL" を指定すること。
技術メモ, Logstash
0 件のコメント:
コメントを投稿