画像

Fluentdを使ってみたかったので、masutaka.netのnginxアクセスログを
Fluentd経由でMongoDBに保存してみました。

Fluentdについては以下が分かりやすいです。
Fluentdで始めるリアルタイムでのログ有効活用 - CodeZine

今回も@hirocaster さんの記事をほぼトレース。

実際、やっていることは単純で、

  1. nginxがアクセスログをファイルに書き出す。
  2. それを検知した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の設定も追加しました。