Slide 1

Slide 1 text

Fluentdでアクセスログを ゴニョった話 導入のTipsとか分かったこととか Fluentd Casual Talks LT Shinya Tsunematsu @tnmt

Slide 2

Slide 2 text

Fluentdがキテるらしい ● けど使ったことない ● 使い道とか何が嬉しいのか分からない ● 今度Fluentd Casual Talksというのをやるらしい

Slide 3

Slide 3 text

お酒って怖いですね

Slide 4

Slide 4 text

というわけで ● 初めて触ってみた俺ですが ● 導入するまでと ● やってみた感想を ● それこそもうカジュアルにザーッとお話します ● これから始める方の参考になれば幸いです

Slide 5

Slide 5 text

何をしようか

Slide 6

Slide 6 text

30days Album 画像APIサーバのアクセスログ ● 画像ストレージは複数のサービスから参照され ている ● アクセスログの「分析」みたいなことは特にやっ てきていなかった ● 必要に応じて手でログをゴニョる程度

Slide 7

Slide 7 text

やってみよう ● 画像ストレージのサービスごとの利用内訳をグ ラフ化

Slide 8

Slide 8 text

こんな感じ ログ集約 サーバ ストレージAPI (lighttpd Catalyst) Fluentd Fluentd Growth Forecast

Slide 9

Slide 9 text

インストールする

Slide 10

Slide 10 text

rbenv + bunder が 便利 ● rbenv: 複数バージョンRubyの管理ツール ● システム全体に影響与えずに個人ユーザ権限 で気軽に始められる ● 古いディストリでも新しいRuby使える ● plugin追加もGemfileに追加してbundle install すればOK の後に画像API側はtd-agentとか fluent-agent-liteとかでも良かったなと…

Slide 11

Slide 11 text

rbenv入ってたらこれだけ # mkdir -p $HOME/work/fluentd # cd $HOME/work/fluentd # cat << EOF > Gemfile source "http://rubygems.org" gem 'fluentd' EOF # bundle install --path vendor/bundle

Slide 12

Slide 12 text

GrowthForecast # cd $HOME/work # git clone git://github.com/kazeburo/GrowthForecast.git # cd GrowthForecast # sudo yum -y install cairo-devel pango-devel libxml2-devel # cpanm -l extlib Alien::RRDtool

Slide 13

Slide 13 text

実際の設定

Slide 14

Slide 14 text

送り元サーバ設定(1) # アクセスログをフォーマットでバラして type tail format /^(?[^ ]*) (?[^ ]*) (?[^ ]*) \[(?

Slide 15

Slide 15 text

送り元サーバ設定(2) # 集約サーバに送る type forward flush_interval 10 name delegate host 192.168.XXX.XXX

Slide 16

Slide 16 text

集約サーバ設定(1) # ストリームを受け取って type forward # 適度にサンプリングして type sampling_filter interval 10 remove_prefix api add_prefix sampled

Slide 17

Slide 17 text

集約サーバ設定(2) # サンプリングしたデータを集計して type datacounter unit minute count_key vhost pattern1 aaa ^aaa.jp$ pattern2 bbb ^img.bbb.jp$ pattern3 ccc ^img.ccc.jp$ tag access

Slide 18

Slide 18 text

集約サーバ設定(3) # 集計結果をGrowthForecastに投げる type growthforecast gfapi_url http://localhost:5125/api/ service aaa section access_count name_keys sampled.access_unmatched_count,sampled.access_aaa_c ount,sampled.access_bbb_count,sampled.access_ccc_cou nt

Slide 19

Slide 19 text

グラフ出来た

Slide 20

Slide 20 text

あっさり出来たすごい ● 設定ファイルの行数少ない ○ 送り元: 18 ○ delegate: 28 ● MongoDBにつっこんだりすることなく、グラフ描 画まで終わる ● pluginは tagomoris さんのものをふんだんに利 用した ● というかブログに書いてあることをかいつまんで そのままやっただけ

Slide 21

Slide 21 text

負荷は? ● 送り元サーバ ○ ログはdaily約100万行 1台あたり 15 req/s くらい ● 集約サーバ ○ 送り元8台に対して1台 →今のところ全く問題無し

Slide 22

Slide 22 text

やってみた感想

Slide 23

Slide 23 text

手頃なログのグラフ化から始めると吉 ● 既にあるログからスタート ● グラフが出るとテンションが上がる(取り方が分 かる) ● テンションが上がると他にも色々データが取りた くなる ○ 画像ストレージノードのレスポンスタイムにばらつきばあ るっぽいので突き止めたい

Slide 24

Slide 24 text

まとめ ● rbenvを使うと導入お手軽(プラグイン追加とか 特に) ● 簡単なデータ集計は既にあるプラグインを使う だけで色々出来る (tagomoris++) ● GrowthForecastがグラフ化するのが楽すぎて しびれる (kazeburo++) ● 目に見える形でデータが出るとテンションが上 がる ● グラフ化から始めて徐々に使い道を探っていく と吉ではないかと

Slide 25

Slide 25 text

というLTでしたがSoftware Designに もっと詳しく載ってました!