filebeatはtail -fを使用してファイル内の新しい内容をチェックし、それを目的の出力にフラッシュしますか?それとも、ファイル内の新しい内容をチェックする他の方法はありますか?filebeatがファイル内の新しいコンテンツをチェックする方法を教えてください。
0
A
答えて
0
filebeatはオープンソースですので、あなたがすることができ、常にgo look yourself
ここでファイルが更新されているかどうかをチェックする上でリンクされたファイルから行くのコードです。
...
は正確には関係のないコードブロックですが、誰もがこれを読んで、ファイル全体を見てみることをお勧めします。
// Scan starts a scanGlob for each provided path/glob
func (p *ProspectorLog) scan() {
newlastscan := time.Now()
// Now let's do one quick scan to pick up new files
for _, path := range p.config.Paths {
p.scanGlob(path)
}
p.lastscan = newlastscan
}
上記の機能はn
は設定で指定されているすべてのn
-length時間ブロック呼び出されます。 ScanGlobが呼び出され、以下に示されています。グロブに一致するすべてのファイルについては
// Scans the specific path which can be a glob (/**/**/*.log)
// For all found files it is checked if a harvester should be started
func (p *ProspectorLog) scanGlob(glob string) {
...
// Evaluate the path as a wildcards/shell glob
matches, err := filepath.Glob(glob)
...
// Check any matched files to see if we need to start a harvester
for _, file := range matches {
...
、これはSTATコールに基づいてstat <file>
// Stat the file, following any symlinks.
fileinfo, err := os.Stat(file)
...
だろうLinuxの場合、OSの特定の呼び出しを使用してファイルの統計情報を確認し、それがあれば決定されますハーベスタ、ファイルを読み込むこのアプリケーションの部分は、起動する必要があります。
// Conditions for starting a new harvester:
// - file path hasn't been seen before
// - the file's inode or device changed
if !isKnown {
p.checkNewFile(h)
} else {
h.Stat.Continue(&lastinfo)
p.checkExistingFile(h, &newFile, &oldFile)
}
// Track the stat data for this file for later comparison to check for
// rotation/etc
p.prospectorList[h.Path] = *h.Stat
}
}
TL; DR:Filebeatファイルは、ファイルを収穫前回更新されているかどうかを確認するためにOSによって報告されたファイルの統計情報を使用していました。
関連する問題
- 1. コンテンツがフレックスアイテムのサイズ変更を防ぐ方法を教えてください。
- 2. net-snmp:新しいエンタープライズトラップの登録方法を教えてください。
- 3. JTextField内でテキストを揃える方法を教えてください。
- 4. ポイントから消える方法を教えてください。
- 5. プロジェクト内に存在しない.CSファイルをプロジェクトフォルダ内で見つける方法を教えてください。
- 6. Railsのinpusを編集/更新する方法を教えてください。
- 7. Eclipseプラグインをアンパックする方法を教えてください。
- 8. タブローを定義する方法を教えてください
- 9. Android - アイコンをタッチする方法を教えてください。
- 10. ImageView Androidをトリミングする方法を教えてください。
- 11. ストリームフィルタをエコーする方法を教えてください。
- 12. ジェンキンズを「ピップインストール」する方法を教えてください。
- 13. コンパイル済みのMATLABアプリケーションで更新をチェックする方法を教えてください。
- 14. JSF2テーブルを時々更新する方法を教えてください。
- 15. Xcodeで「アプリ内購入コンテンツ」テンプレートを使用する方法とその理由を教えてください。
- 16. 新しいタブでダウンロードまたは開くオプションをユーザーに与える方法を教えてください。
- 17. 新しいアクティビティを開始したくない理由を知る方法を教えてください。
- 18. IEに適したカスタマイズ方法を教えてください。
- 19. EclipseでAVDを「見る」方法を教えてください。
- 20. ファイルセット内のすべてのファイルをチェックしてください。
- 21. Eclipseを使用していくつかのJavaファイルをコンパイルする方法を教えてください。
- 22. XMLファイルを迅速にフォーマットする方法を教えてください。
- 23. PHP 5.3(CodeIgniter)でファイルをアップロードする方法を教えてください。
- 24. IISで.svgファイルを圧縮する方法を教えてください。
- 25. htmlファイルをelasticsearchにダンプする方法を教えてください。
- 26. アプリケーションにJSPファイルを追加する方法を教えてください。
- 27. MakeMakerにXSファイルをサブディレクトリにビルドする方法を教えてください。
- 28. Paperclip - ファイル名にタイムスタンプを追加する方法を教えてください。
- 29. Perl:ファイル名を動的に開く方法を教えてください
- 30. TSQLを使用してユーザーのパスワードの有効期限をチェックする方法を教えてください。