logstash のログの入力として file を使用しています。私のログ ファイルは毎日ローテーションされるので、logstash のファイル プラグインをどのように設定すれば、毎日ローテーションされるファイルを操作できるようになるのかを知りたいと思いました。これに加えて、ファイル ビートでもログ ローテーションを利用できます。
1 に答える
私はあなたの質問に部分的に答えようとしています。
最初 - ログのローテーション。
ドキュメントから:
回転されたファイル名は新しいファイルとして扱われることに注意してください。そのため、start_position が先頭に設定されている場合、回転されたファイルは再処理されます。
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html
つまり、ファイルのローテーションに名前の変更がある場合、ファイルが 2 倍になる可能性があります (名前が変更されたファイルがパスに含まれていない限り)。
名前を変更したファイルがパスに含まれていない場合は、問題ありません。
これを別の方法で修正しました(それに応じてJavaとPythonで)。
ファイルの名前変更を無効にし、代わりにログ ファイルに日付のプレフィックスを付けて名前を付けます。したがって、私のJavaアプリでは、ファイル名は次のとおりです。
my-server-log-%h-%d.log
私は分散環境で作業しているので、ホスト名をログファイル名に組み込みます。
%h = ホスト名 %d = 日付
これは、次の名前のファイルになります。
my-server-log-pandaadb-2016-06-20.log
このファイルの名前は変更されません。ローテーション アルゴリズムを変更して、単に名前を変更せず、代わりに真夜中に新しいファイルを作成し、以前のファイルをそのままにしておくようにしました。これにより、logstash が以前のファイルのすべての行を読み取ったことを (正しく) 認識できるようになります。入力にワイルドカードを使用しているため、新しいファイルが取得されます。ログは複製されません。
ちなみに、これはrsyncと組み合わせても非常にうまく機能します。
それが役立つことを願っています、
アルトゥール
編集:これまでファイルビートを使用したことがないため、その部分についてコメントすることはできません.