fluentd
googlecomputeengine
GoogleCloudPlatform
kubernetes

Google、FluentdをKubernetesとCompute Engineの標準ログコレクタに採用

More than 3 years have passed since last update.

まずはFluentdコミュニティの皆さん、おめでとうございます!!!

Googleを中心に開発されているオープンソースのDockerジョブスケジューラKubernetes (k8s)、それにGoogle Cloud Platformのログ収集サービスGoogle Cloud LoggingのGoogle Compute Engine用ログコレクタとして、Fluentdが標準採用されました。もうひとつおまけに、fluent-plugin-bigqueryをフィーチャしたソリューションページも、あと1か月くらいでcloud.google.comにて公開される見込みです(これは私がいま仕上げ中)。

順番から行くと、まずはCloud Loggingチームで以前からFluentdの採用が検討されていて、正式採用を決定、それに影響される形でk8sチームもFluentdを採用した流れです。私も微力ながらお手伝いしてまして、TDの太田さんと田村さんをUSオフィスに招き、Cloud Loggingチームとミーティングを設けてコラボレーションの方向性を議論したり、GCPチーム内でも何かとFluentdを宣伝しまくったり。しかし何より強調したいのは、最終的にはCloud Loggingチームによる性能やフットプリント等の技術評価の結果、他のさまざまな選択肢の中でもFluentdがベストであると判断された点です。これは日本人としてとても誇らしいことでした。Awesome Job!!!

つい先日、GitHubのGCPリポジトリにGoogle版Fluentdがpushされ、Cloud LoggingのAlpha版のページもひっそり公開されました。この辺りの状況はRebuild.fm 68でももりすさんが触れられてましたが、ここでGCPでのFluentdの導入状況を簡単にまとめたいと思います。

KubernetesでのFluentd採用

k8sでFluentdがどのように組み込まれたのかは、k8sチームのSatnam Singhのブログ記事Collecting the Output of Containers in Kubernetes Podsに詳しいです。

Fluentd pod

Kubernetesは複数のDockerコンテナのスケジューリングのためのフレームワークであり、当然ながら各コンテナから出てくるログをどうまとめようかという問題が生じます。Fluentdはこの問題を解決するために導入されており、

By default when a Kubernetes cluster is created for the Google Compute Platform a pod is scheduled to execute on each node to gather all the Docker container log files using the Fluentd log collector. 

とあるように、GCP上でKubernetesを動かすと、すべてのDockerコンテナのログがFluentd経由で集められるようデフォルト設定されています。集めたログはElasticsearchに流せるほか、Google Cloud Loggingに送る設定も可能です。

Googleではk8sのマネージドサービスとしてGoogle Container Engine (GKE)のAlpha版も提供開始しています。現時点ではGKEにはFluentdは組み込まれていない様子ですが、いずれはGKE上で動作するDockerコンテナのログもFluentdで集められ、Cloud Loggingに流せるようになるはずです。

Google Cloud LoggingでのFluentd採用

Google Cloud Loggingはつい先日ひっそりとAlpha公開された新サービスで、Google App EngineとGoogle Compute Engineのログを収集し、Cloud Developers Consoleのログビューア上で表示したり、正規表現でフィルタリングしたりできるものです。現状ではコストはかからず、最大30日間のログを保存できます。ゆくゆくはログをGoogle Cloud StorageやBigQueryに転送する機能も出てくると期待されます。

Screen Shot 2014-11-25 at 14.04.30.png

具体的にFluentdがどのように使われているかは、Configuring a Google Compute Engine VM for Google Cloud Loggingを見るのがわかりやすいです。Google Compute EngineのDebianまたはUbuntuのインスタンスを作成したら、Googleが用意した専用のFluentdをインストールすることで、Google製プラグインを介してCloud Loggingにログが流れ始めます。専用といっても中身は普通にFluentdですから、google-fluentd.confをいじれば自分の好きなプラグイン入れたりごにょれるんじゃないかなと思います。

おそらく今後は、Compute Engineのインスタンスを作成する際にもっと簡単にFluentdをオプトインできる機能が提供されると期待されます。

Fluentd+BigQueryソリューション

これは私が今期携わっているお仕事で、GCPのソリューションページのひとつとしてfluent-plugin-bigqueryをフィーチャしたソリューションを公開すべく作業中です。最近ちょこちょこpushしてるbigquery-fluentd-docker-sample等はその素材ですね。

というわけで、私にとってはGCPにおけるFluentd標準採用が今年もっとも嬉しい出来事のひとつでした。最後にもう一度、皆さんおめでとうございます!


Disclaimer この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。