nginxのアクセスログをFluentd経由でMongoDBに保存してみた

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の設定も追加しました。

2013-07-14 (Sun) · masutaka