🥰

Fluentd(Fluent Bit)の特徴と代表的な構成例を紹介

2024/06/12に公開

はじめに

この記事は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の機能

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を使用した場合の構成例。

https://docs.fluentd.org/monitoring-fluentd/monitoring-prometheus

GitHubで編集を提案
株式会社Inner Resource

Discussion