Logstashをインストールして、Apacheファイルを解析しました。設定を正しくするまでにかなりの時間がかかり、常に実際のログを試しました。 (ドキュメントに書かれているように)logstashがファイル内の場所を「記憶」していることに気付きました。現在、私の設定はOkであり、Logstashに「忘れる」ことを望みます。これは私よりも難しいようです。私はすでに次のことをしました:
使用済み:start_position => "beginning"
elastissearchから完全な「データ」フォルダーを削除しました(最初に停止しました)。
lsof -p PID
を使用してlogstashで開いたファイルを調べ、有望なものをすべて削除しました(私の場合は/tmp/jffi*.tmp
)
それでもLogstashは、ログが存在するフォルダー内の「新鮮な」ファイルのみを忘れて解析しません
何か案は?
デフォルトでは、logstashは通常、$HOME/.sincedb
にあるログファイルに最後にあった位置を書き込みます。 Logstashは、/dev/null
をsincedb_path
として指定することにより、ログファイルを解析しないと信じ込ませられます。
ここにドキュメントの一部 入力ファイル 。
Sinceデータベースを書き込む場所(監視対象のログファイルの現在の位置を追跡します)。デフォルトは、環境変数「$ SINCEDB_PATH」または「$ HOME/.sincedb」の値です。
設定例
input {
file {
path => "/tmp/logfile_to_analyse"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
プラグインファイルは、「テーリング」の履歴をsincedbファイルに保存します。デフォルト:$ HOME/.sincedb *の下で、 http://logstash.net/docs/1.3.3/inputs/file#sincedb_path を参照してください
Dbファイルには次のような行が含まれています。
[inode] [major device number] [minor device number] [byte offset]
したがって、完全なファイルを再度解析する場合は、次のことを行う必要があります。
ls -i yourFile | awk '{print $1}'
)キーstart_position => "beginning"
を使用して、Logstashはすべてのファイルを分析します。
Sincedbファイルの例:
.sincedb_7a7413a84171aa550d5318c17fd756e9
:名前にはsincedb_とキーパスのすべてのディレクトリのMD5(Digest :: MD5.hexdigest)が含まれます( http://logstash.net/docs/1.3.3/inputs/ file#path )。プラグインファイルのコードを参照してください: https://github.com/logstash/logstash/blob/master/lib/logstash/inputs/file.rb#L105Logstashは$HOME/.sincedb_*
にレコードを保持します。すべての.sincedb
を削除してlogstashを再起動すると、Logstashはファイルを再解析します。
すべての回答を組み合わせて、これがファイルを解析する最良の方法だと思います。テストでも同じことをしました。
input {
file {
path => "/tmp/access_log"
start_position => beginning
sincedb_path => "/dev/null"
ignore_older => 0
}
}
クイックテストでは、ignore_older
の代わりにtouch /tmp/access_log
を使用して、ファイルのタイムスタンプを変更することもできます。
Logstash-forwarderを使用している場合は、代わりに.logstash-forwarder
ファイルのホームを確認してください。
{
"/var/log/messages": {
"source": "/var/log/messages",
"offset": 43715,
"inode": 12967,
"device": 51776
}
}
$HOME/.sincedb_*
を削除した後、まだデータを取得していません。
たくさんのことを試した後、.conf
からメインの/etc/logstash/conf.d
ファイルを除くすべてを削除し、Logstashを再起動しましたが、すべてが機能しました。 logstashが静かに停止している.conf
ファイルの1つに何かがあったと推測できます。
ファイルに大きなデータが含まれている場合、実際に毎回再解析するのは非常にコストがかかります。そのため、これを行う前に注意する必要があります。再解析を強制する場合は、入力ブロック内にパラメーターを設定します
sincedb_path => "/dev/null"
このオプションは.sincedbファイルを保存せず、logstashは毎回再解析します。ただし、毎回ではなくときどき再解析する場合は、ファイルの解析時に作成される.sinceDbパスを手動で削除することができます。通常、ルートディレクトリ以外のルートユーザーでない場合は、ホームディレクトリに隠しファイルとして存在します。 sincedb_pathを他の場所に設定して、このファイルを簡単にトレースすることもできます。
sincedb_path => "/home/shubham/sinceDB/productsSince.db"
Logstashオプションの混乱を避けたい場合は、既存のログファイルの名前を変更または削除し、古いファイルの内容からnewファイルを作成すると、logstashが再インデックス付けされることがわかりました。
ホームディレクトリで見つけましたが、削除した後、logstashは既存のログファイルの再選択を拒否しました。私がそれを動作させる方法は、追加することでした
sincedb_path => "/opt/elk/sincedb/"
私のファイルプラグインに。毎回リセットし、sincedb_pathのパスを変更するだけだと思います
tar.gz install filebeatを使用する場合、このファイル$FilebeatPath/data/registry/filebeat/data.json
を削除して、filebeatを再実行できます