Fluentdで多種多様なログ処理を行おう!

『Fluentd実践入門』⁠技術評論社、2022⁠⁠、⁠はじめに」および第1章「Fluentdとは何か」より

Fluentdは、ログなどのデータの収集および集約、転送、変換、保存を実現するためのソフトウェアです。すでに多くのユーザーに利用されているほか、Kubernetes、Amazon Web Services、Google Cloud Platform、Microsoft Azureといった環境で標準的なツールとして使われています。

ここでは、単にログを収集、転送、保存するだけにとどまらない、Fluentdの使われ方を紹介します。

ログ検索をすばやく実行

Fluentdにより実現される最もわかりやすい機能は、ログの検索です。切れ目なく流れてくる莫大なログから、あらかじめ決めておいたパターンに沿うログを検索、抽出し、何か特徴的な出来事が発生したときにそれをすばやく報告します。たとえば、ディスクのクラッシュ、不正なログイン、想定外のプロセス終了といったコンピュータの障害をシステムログから発見できます。また、複数の条件の組み合わせでログを検索、抽出することも簡単にできます。ECサイトでは、売上のあった商品と購入者の年齢などの属性の組み合わせで検索することなどが広く行われています。

ログ集計によるモニタリングと通知の自動化

前項の単純なログの検索は流れるログの1件1件を対象に行われますが、これではできることに限界があります。たとえば、大規模なWebサービスで秒間何百リクエストも流れている場合、全エラーログをそのまま出力していては莫大な量となり、何がなんだかわかりません。ある程度以上の件数で発生しているエラーログだけを抽出して表示したり、エラーログの種類ごとに何件ずつかを報告したりといったことが求められます。

これを実現するのがFluentdによるログの集計です。ログをあらかじめ決めた細かい単位、時間の場合は1秒から1分程度、あるいは100件のログごとなどで区切り、ログが到着するごとに逐次処理的に集計します。これにより、詳細な分析結果をすばやく入手できます。先述したエラーログの種類別件数のレポートなども簡単に作成できます。ECサイトの在庫管理のため、商品ごとの売り上げが一定期間内に何件以上になったら通知するといったことも行えます。

リアルタイムな状況分析

前項のログ集計は強力ですが、何をどう集計するかを事前に決めておかなくてはならない点で使い勝手が悪いこともあります。何かが起きた場合に、通知を受け取ってから、通知時点よりさらに過去のデータにさかのぼって調べたい、ということがあります。あるいは、最近のデータに対して簡単に集計をかけ、結果内の特徴的なデータに絞ってさらに調べたいというような機能もよく要求されます。

FluentdとElasticsearch、Kibanaを組み合わせて使うことで、この要望に応えることができます。転送されてくるログをFluentdを用いて収集したのち、検索用データベースのElasticsearchに格納し、KibanaというWeb UIツールで可視化します。Kibanaの画面上で検索や集計を行えるため、最新のログに対してインタラクティブに処理を実行して結果を確認し、それをもとにさらに処理を実行するという繰り返しを実現できます。


Fluentd実践入門は、Fluentdについて開発者自らが網羅的に解説した書籍です。Fluentdの基本から、内部構造やプラグイン機構の詳細、運用ノウハウやプラグインの開発方法までを解説しています。おそらくは世界で初めてのFluentdのみについての技術書であり、ここまでまとまった日本語情報はほかでは得られないため、すべてのFluentdユーザーが読んでおきたい1冊です。