Fluentdを使ってみたかったので、masutaka.netのnginxアクセスログを
Fluentd経由でMongoDBに保存してみました。
Fluentdについては以下が分かりやすいです。
Fluentdで始めるリアルタイムでのログ有効活用 - CodeZine
今回も@hirocaster さんの記事をほぼトレース。
- なぜFluentdなどを使ってログデータ活用するのか?|Act as Professional - hiroki.jp
- fluentdをインストールしてnginxのログをまずはローカルで集める|Act as Professional - hiroki.jp
- fluentd経由のデータをmongodbへ保存する|Act as Professional - hiroki.jp
- 実際に運用しているサービスのnginxログをLTSVにしてみた!|Act as Professional - hiroki.jp
実際、やっていることは単純で、
- nginxがアクセスログをファイルに書き出す。
- それを検知したFluentd(実際はtd-agentを利用)がMongoDBに記録する。
ってだけです。
最後の記事を参考に、nginxのログ形式はデフォルト(Combined形式と呼ぶ
らしい)からLTSV
形式に変更してます。最近のtd-agentはLTSVをサポートし
ているのでシンプルに書けました。あと、td-agentのログでWarningが出て
いたので、pos_fileも追加しました。
fluent-plugin-mongoをインストールするChefのレシピと、nginxの設定も
コピペしておきますね。
始め、nginxとtd-agentの通信はパイプかなにかを介するのかと思い、難し
く考えていましたが、実際は単なるファイルでした。ポーリングしている
みたいです。
もうひとつ誤解してたのが、
td-agentを使う = Hadoopを使わなければならない
だと思い込んでいたことでした。やたら難しく考えていた。
やってみたら予想以上に単純でした。むしろChefのレシピを作るのに、
多大な時間を使ってしまった。。
次はGrowthForecast を試してみます。
追記(2013-07-15):
今のtd-agentはLTSVをサポートしているFluentdを同封していると指摘を受
けましたので、記事を書き換えました。repeatedlyさん、ありがとうござ
いました。
追記(2013-08-15):
Chefのレシピやnginxの設定も追加しました。