(2014年総集編5)Fluentd がデータ収集ツールのデファクト・スタンダードへ
本記事は移転しました。新サイトにリダイレクトします。
はじめ
トレジャーデータはクラウドでデータマネージメントサービスを提供しています。
トレジャーデータが公開しているオープンソースの1つに,「Fluentd」をいうデータ収集ツールがあります。Fluentd はそのリリースとともに大多数のコミッターをもつ巨大プロジェクトに成長しました。なぜ Fluentd がこれほどの早さで普及していったのか,その理由を振り返ってみましょう。
※ Treasure Data Service(トレジャーデータサービス)においても,「Treasure Agent」と呼んでいるログ収集ツールも Fluentd をベースに,アウトプットを各アカウントのトレジャーデータストレージに設定された製品版です。
ログ収集の大変さについて
- データソースの多様性:テキスト形式,RDBMS,NoSQL,スマートフォン,センサーデータ,etc.,…,これらの根本的に性質の異なるデータソースには,おのおのに適切なツールを作成する必要がありました。もし異なるデータソースからデータを集めようとすれば,別個のデータ収集ツールを作成,管理することが必要でした。
- 安定的運用の困難性:一度収集ツールを作成してしまえば,それで完了といかないのがログ収集のつらいところです。データソースの仕様が変更になったとき,データソースの置き場が変わったとき,一時的な高負荷による障害など,さまざまな理由で収集ツールを安定運用することは困難です。
ログ収集で大切なポイントとFluentd のアプローチ
Fluentd は前述のおのおのの問題に対して,以下のアプローチをとっています。
・ 異なるデータソースに対しても統一的に管理運用できること
- Fluentd は異なるデータソースに対しても「プラグイン」という設定ファイルの変更だけで対応することが可能です。
・異なるデータフォーマット(カラムの種類や型)に変更されても柔軟に適応してくれること
- Fluentd はログを JSON に準ずるフォーマットで収集します。そのため,データソースの仕様に変更(項目の追加や変更)が生じても,今までと同じようにデータを収集してくれます。
・ログをストリーミング収集してネットワーク帯域を安定的に使えること
- Fluentd はデータソースを監視するエージェントを仕込むことによって自動的にログの追加を検知し,ストリーミング収集することが可能です。
・一時的な障害などの理由でツールが停止してしまわないこと
- 一時的な障害によって中継先のサーバーが死んでしまっていた場合も Fluentd は良きに計らってくれます。中継元の Fluentd エージェントは常にログをバッファリングし,リトライしてくれます。
・使い方や運用の悩みを相談できるコミュニティがあること
- Fluentd コミュニティは非常に活発です。日々さまざまなプラグインが作成され,ディスカッションされ,改善されています。また,コミュニティメンバーに日本人が多いことも大きな魅力です。気軽にコミュニティに参加できる風土はFluentdならではです。
・コミュニティによってプラグインが成熟されること
- コミュニティによって育てられているプラグインは日々進化を続けています。