今年はさだまさしさんのデビュー40周年という記念の年ですね。大平です。
さだまさしさんの歌は、時に切り口鋭く、時に叙情的に情景を描写する技術もさることながら、落研出身ゆえの話術の巧みさ、流暢さも魅力の一つです。
あまりさだまさしの話を続けると上長に叱られますので、、この記事では「流暢な」という意味の名前を持つOSSのミドルウェアについて、ご紹介をしたいと思います。
fluentdについて
fluentdは、Treasure Data Inc.の古橋貞之さんが公開しているOSSです。
古橋さんはMessagePackの作者としても有名ですね。
fluentdは、古橋さんのブログ記事から説明を引用すると以下のようなツールです。
fluent は syslogd のようなツールで、イベントログの転送や集約をするためのコンパクトなツールです。
ただ syslogd とは異なり、ログメッセージに テキストではなく JSON オブジェクト を使います。また プラグインアーキテクチャ を採用しており、ログの入力元や出力先を簡単に追加できます。
http://d.hatena.ne.jp/viver/20110929/p1
fluentdを用いると、syslogdと同じように、ログやイベントなどをリモートの別サーバーに転送・集約することができます。また、現代的なプロダクトなので、JSON形式(に準拠した形)の構造化された形式でデータのやり取りをする事ができます。
また、インストールや設定導入が非常に簡単ですし、プラグイン機構を用いて処理の拡張も手軽に行なう事ができるのが特徴です。
社内技術セミナーでの発表資料
fluentdは弊社内の一部のプロジェクトで既に実戦投入されています。
そちらの事例の紹介と、デモの紹介、そもそものfluentdについての説明などをテーマに、先日社内で開催された技術セミナーで発表いたしました。
以下はその際に用いた資料になります。
用途は詳述できないので資料中では分かりづらい表現になっていますが、社内向けのデータ解析処理を行なう前段階で、ログを各サーバーから収集するためにfluentdを用いました。
(余談ですが実際の解析処理はHadoopを用いて行っています。)
また、上記事例以外に、社内外で準リアルタイム解析基盤への要望が強くなってきていますので、
fluentd+MongoDB+node.jsを用いた簡単な準リアルタイムシステムのデモも発表いたしました。
質疑応答の内容
弊社の技術者の中にもfluentdのような技術について興味がある者が多いようで、発表後いくつかの質問をいただきました。
その中のいくつかを抜粋してご紹介いたします。
- Q.出力先は複数設定できるか?
- A.設定ファイルに記述してあげることで、複数の出力先に出力することができます。
- Q.システムのモニタリング・監視はどのようにしているか?
- A.fluentdのメトリクス(何回input/outputイベントが発生し、何回成功・失敗したか、等)が取得できれば良いのですが現状はできないようなので、fluentd自体のport生死監視と、転送されたデータサイズの監視をしています。何か異常が認められた場合は生ログを用いて復旧処理を行なう、というフローで対応しています。
- Q.ライセンスは?
- A.Apache License, Version 2.0みたいです
- Q.fluentdがdownした時にリカバリ処理をしてくれるか?
- A.プラグインの実装次第ですが、たとえばtail プラグインの場合は読み込んだ位置を設定で保存させる事ができるようになっています。(再起動後、保存された位置から再度処理を再開)
まとめに代えて
fluentdは出始めのツールですが既に完成度が高く、地味ですがログ転送・解析以外でも色々な現場で応用が効くと思われる素晴らしいツールです。ぜひ皆さんの環境でも、マッチする現場がありましたら試してみてはいかがでしょうか。
私も、もう少しRubyを習得して、プラグインをサクサクと書けるように精進したいと思います・・・
Fluentd meetup in Japan
私のブログ記事では内容がイマイチ掴めない、という方に朗報ですが、2012年2月4日(土)に「Fluentd meetup in Japan」というfluentdの技術イベントが開催されるようです。
http://www.zusaar.com/event/193104
もし興味がある方は、こういうイベントに参加して情報収集をされてみるのも良いかもしれませんね。