Fluentd(Fluent Bit)の特徴と代表的な構成例を紹介
はじめに
この記事はInner Resourceのエンジニア勉強会の資料を社外向けに公開したものです。
著者のFluentdの経験としてはKibanaでログ可視化くらいで止まっていたので、Fluent Bitやログ検索にGrafana Lokiを使用した場合の構成例なども調べてまとめてみました。
Fluentdとは?
Fluentd(フルエントディー)はオープンソースのログ収集管理ツールやデータコレクターと呼ばれるソフトウェア。Fluentdの大部分はRubyで実装されており、パフォーマンスに関わる部分のみCで実装されています。
Fluent Bitとの違い
Fluentdの兄弟プロジェクトとしてFluent Bitというソフトウェアも存在します。
Fluent Bitは全てCで実装されているのが特徴で、Fluentdよりも軽量でパフォーマンスが優れているためIoT/組み込みやK8s等のコンテナ上でのログ収集に向いています。Amazon ECSのカスタムログルーティングツールであるAWS FireLensでもFluent Bitの使用が推奨されています。
ただし、C実装ということもありFluentdに比べると既存のプラグインは少ない印象なので、対応プラグインの豊富さを理由にFluentdを採用するケースはまだまだ多いと思います。
Fluentdの機能
input
アクセスログやアプリケーションログ等の様々なデータソースからデータを収集する機能。
output
ファイルやDB、外部サービス等にデータを送信する機能。
buffer
メモリやファイルにバッファを保管しておくことで、送信先がダウンしていた際の一時的なデータ保管や、送信先のキャパシティに応じて送信量を調整する機能。
filter
Webサーバーのアクセスログの中から500番台のエラーのにみ、エラーのラベルを付与して送信先を変更したり、特定のデータを削除する機能。
formatter
送信先に合わせてデータのフォーマット(LTSV、CSV等)を変換することができる機能。
Fluentdの特徴
プラグインアーキテクチャ
Fluentdはプラグインアーキテクチャを採用しているため、Fluentd標準のinput/outputプラグイン以外にも、Rubyで自由に新たなプラグインを開発することができます。AWSやGCPなどのサービスと連携するためのプラグインも既に多くリリースされているため、既存のプラグインを組み込みことで簡単に機能を拡張できます。
マルチプラットフォーム
Rubyの動作環境が揃えば、Linux、MacOS X、Windows、UNIXなどさまざまなOSで導入可能。
高信頼性
FluentdはAt-most-onceまたはAt-least-onceに対応しており、buffer機能により障害等によるログの欠損を防ぐことが可能。
Fluentdを用いた構成例
ログ検索(Fluentd・Elasticsearch・Kibana)
2013年にKibanaがリリースされてからFluentd・Elasticsearch・Kibanaの構成でアクセスログ等を可視化するのが一時期流行りました。
ログ検索・メトリクス可視化(Fluent Bit・Grafana Loki・Prometheus)
2019年にGrafana Lokiがリリースされてからは、Elasticsearch・Kibanaに比べてより軽量、低コストでログの検索が出来るようになりました。
以下はログ検索にGrafana Loki、 メトリクス可視化にPrometheusを使用した場合の構成例。
Discussion