じめに

本書は、Fluentd(フルーエントディー)について網羅的に解説した書籍です。ログやデータを扱うソフトウェアエンジニア、プログラマー、データエンジニア、ITインフラエンジニアやSRE(Site Reliability Engineer)といった職種の人を対象とした、おそらく世界で初めてのFluentdのみについての技術書です。

Fluentdは、ログやそのほかのデータの収集および集約、転送、変換、保存を実現するためのソフトウェアで、クラウド環境において基盤となるソフトウェアの開発を推進するCNCF(Cloud Native Computing Foundation)傘下のOSS(Open Source Software)として公開されています。すでに多くのユーザーに利用されているほか、Kubernetes(クバネテス)環境におけるデファクトスタンダードなログ収集方法として扱われています。そのため、AWS(Amazon Web Services⁠⁠、GCP(Google Cloud Platform)およびMicrosoft Azureといったクラウド環境においても標準的なツールとして使われています。

Fluentdがこれだけ広く使われるようになったのは、使いやすさとわかりやすさによるところが大きいでしょう。ただし、より広い用途で、あるいはより大きいデータ量を扱うには、Fluentdに関するさまざまな細かい知識を必要とします。Fluentdが広く使われるようになった現在こそ、入門をこえた状況に対応できる必要があります。たとえば、流量の大きいデータを扱う場合、データの扱いに高い信頼性が求められる場合、あるいは、既存のソフトウェアでは対応していない形式や手段でのデータの入出力を扱わざるをえない場合などです。

流量の大きいデータを扱う場合や高い信頼性を実現しなくてはならない場合、不確かな知識をもとにした設定や運用では十分な成果は得られません。Fluentdがデータをどのように扱い入出力を行っているのかについて、内部の構造やプラグインの詳細などを含めて明確に知っておくべきです。また、既存のソフトウェアが対応していない形式や手段に対応するためには、データの入出力を行うプラグインを自分で開発できる必要があります。

本書は、Fluentdがデータをどのように処理しているかから、内部構造やプラグイン機構の詳細、プラグインの開発方法までを網羅的に記述しています。内容の技術的な難易度についても、Fluentdのインストールや設定のように基本的な事柄から、Fluentdの通信プロトコルのように応用的な事柄までを幅広く扱っています。筆者はFluentdの初期からのユーザーであり、Fluentdの主開発者の一人でもあるため、ユーザーとして必要な事項を開発者の視点から解説できているはずです。

Fluentdについては長い間、専門の解説書が存在しない状況が続いていました。本書の登場はやや遅かったかもしれませんが、これから長い間、大いに役立つはずです。本書を手がかりに、多くの人が高性能で堅牢なシステムを構築できるようになることを願っています。

2022年9月 田籠聡

謝辞

本書の執筆にあたり、多くの方の助力をいただきました。

原稿のレビューに参加していただいた足永拓郎@ashieさん、林健太郎@kenhysさん、福田大司郎@daipomさん、高橋達@toru-takahashiさん、そして長い間Fluentdの主メンテナーでもあった中川真宏@repeatedlyさんには、自分以外の視点からこの本にとって重要なことを多くご指摘いただきました。ありがとうございました。

非常に長くなってしまった本書の執筆期間、編集者の稲尾尚徳さんには何から何まで助けていただきました。完成までお付き合いいただき、本当に感謝しています。

自分がFluentdというソフトウェアに関わっているのは、もちろん古橋貞之@frsyukiさんがこのプロジェクトを始めてくれたからです。ありがとうございました。おかげで経験できた多くのおもしろい物事に、今回、本の執筆というものも加わりました。

本書の執筆を開始したときにはまだ妻ではなかった祥子さん。いつもありがとう。これからもよろしくお願いします。

本書の読み進め方

Fluentdを少し使ってみたことがあるだけという方は、ぜひ本書を最初から読んでください。データ処理の基本にして最重要と言えるトピックを、理解しながら読み進んでいけるはずです。

Fluentdについてすでに一通りの知識を持っている方は、本書のどこから読み始めても問題ありません。

本書の前提知識

FluentdはWindows環境にも対応していますが、本書の多くのトピックではLinuxやmacOSといったUNIX系の環境を想定しています。UNIX系の環境について基礎的な知識を持っていると、本書の内容をより深く理解できるでしょう。

また、プラグインの開発においてはRuby言語でのプログラミングを行うことになるため、Rubyの基本的な文法や機能を知っているほうが望ましいでしょう。とはいえ、ほかの言語での開発経験があれば、本書で扱うRubyのコードはそう複雑ではないため、比較的容易に理解できると思います。

対象バージョン

本書は、Fluentdのバージョン1.15を対象とします。必要に応じて、過去のバージョン、特に0.12系バージョンとの差異についても解説します。

動作環境

動作環境としては、Ubuntu、Debian GNU/Linux、Red Hat Enterprise LinuxやAmazon LinuxといったLinuxの各ディストリビューションを想定しています。設定例などの動作確認には、macOSも使用します。

田籠聡(たごもりさとし)

プログラマーとしてlivedoor,LINE,Treasure Dataなどで働いたのち,現在は独立してサービス開発や技術顧問などを行う。データ分析基盤関連のほか,WebアプリケーションやITインフラなどの技術にも携わる。ほかにISUCONの発案と発起など。Fluentdを含む多数のOSSプロジェクトのコミッター,メンテナー。