はじめに
この記事では、Elastic社のOSSである、Filebeatの概要について記載します。
概要
Filebeatは、軽量なログを送信するOSSのソフトウェアです。
ログの種類はMicrosoft Azure、Nginx、MySQLなど様々サポートされています。
ログの送信先は主に、ElasticsearchやLogstashなどのElastic Stackのサービスに送信して、Kibanaなどで見える化して使用します。Filebeat自体は、基本的にLogstashやElasticsearchが入っていない、ログを出力するサーバPCへ導入します。
inputとharvester
Filebeatの主要なコンポーネントとして、inputとharvesterがあります。
これらのコンポーネントが協力をし合い、tail filesを生成して出力先へ送信をします。
harvesterの役割
harvesterは日本語にすると、収穫者の意味合いがあります。harvesterは、単一のファイルの内容を読み取る責任があります。各ファイルを1行ずつ読み取り、内容を出力先に送信します。
inputの役割
inputはharvesterを管理し、すべてのソースからの読み取りを行います。
入力タイプがログの場合、定義されたglobパスに一致するドライブ上のすべてのファイルを検出し、各ファイルのハーベスタを開始します。
以下の例では、指定されたglobパターンに一致するすべてのログファイルから行を取得するようにFilebeatを構成します。
filebeat.inputs:
- type: log
paths:
- /var/log/*.log
- /var/path2/*.log
Filebeatはどのようにしてファイルの状態を保持するのか
Filebeatは各ファイルの状態を保持し、その状態をファイルに頻繁に書き込みをします。状態は、harvesterが最後に読み込んだオフセットを記憶し、すべてのログ行が送信されるようにするために使用されます。ElasticsearchやLogstashなどの出力に到達できない場合、Filebeatは最後に送信された行を追跡し、出力が再び利用可能になるとすぐにファイルの読み取りを続行します。Filebeatが実行されている間、状態情報も入力ごとにメモリに保持されます。Filebeatを再起動すると、ファイルのデータが使用されて状態が再構築され、Filebeatは最後に知られた位置で各harvesterを続行します。
さいごに
Filebeatの概要について記載しました。
入力ソースもS3やMQTTなど様々な対応ができますので、使ってみてはいかがでしょうか。
コメント