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のメモリ状況は以下の通り低い数字で安定していますし、トラフィックに応じて上下しています。