fluentdを導入しました&webサーバー上のagentが結構メモリを消費するよ

そこそこのトラフィックのあるWebサーバー上で、アプリケーションから出力されるいくつかのログファイルを収集するためにFluentdを導入しました。

セットアップはこんな感じ。

fluentdのバージョンは0.10.15, rvmが1.10.3, rubyが1.9.3p125 です。

Webサーバーは20台で、一番多いサーバーで800万req/dayくらいの規模です。
各Webサーバー上ではin_tailで3つのファイルをtailし、out_roundrobin & out_forwardで計4台の集計用サーバーに流して、そこでレコメンデーションやKPIの集計を行っています。

Webサーバー上のagentとして動くFluentdの設定ファイルはこんな感じ。

この3つのファイルは、それぞれdailyでローテートされてて、1日当たり 460万行、640万行、370万行くらいです。

起動は以下のスクリプトで行っていて、今のところ定期的な再起動はなし。運用開始から2週間ほどたってて、設定変更のために何回か手動で再起動をしています。

最長1週間ほど起動しっぱなしでしたが、その時点で1G程メモリを使ってました。

改めてFluentdプロセスのRSSをグラフ化してみるとこんな感じ。(再起動から2日たってますが、値を取り始めたばっかなのでまだちょっとわかりません)

なおVSZは起動当初260Mくらいから、2日で1.1Gくらいになってます。

現状こんなところです。

なお、動き自体は一点を除いて(だれかマージして!)うまくいっていて、PV/UU/処理時間などを詳細かつリアルタイムに視覚化できていたり、ユーザーの行動データをもとにしたレコメンデーションをほぼリアルタイムに実現できています。とってもハッピー!

      • -

※ 3/30 追記

メモリ使用量ですが、1日たって以下のようになりました。朝4時でログファイルのローテートが発生してるんですが、そのタイミングでスカッと落ちました。(また上がってますが)

ついでに、Webサーバーからforwardされたログを受け取って処理している側のfluentdのメモリ状況は以下の通り低い数字で安定していますし、トラフィックに応じて上下しています。