ログ処理を「あきらめない」
JAWS−UG 中央線 第0回
荒木靖宏
自己紹介
名前
• 荒木 靖宏(AWSのSAです)
中央線
• 吉祥寺と武蔵境に7年弱
ID
• Twitter: ar1
• ar@debian.org
好きなAWSサービス
• Amazon Virtual Private Cloud
• AWS Direct Connect
ログはダッシュボードで見たい
4
web server
web server
web server
EC2で生成 S3に集約 EMRで集計
FluentdS3Plugin
S3DistCp
hiveorstreaming
RDSに出力
/main?page=1
/main?page=2
/main?page=1
{“page”:”1”}
{“page”:”2”}
{“page”:”1”}
page1 t 2
page2 t 1
page | count
---------------
page1 | 2
page2 | 1
5
web server
web server
web server
生成 収集 集計
データの流れ
データがS3にあれば・・・
Elastic MapReduce DynamoDB RedShift
必要に応じて解析クラスタを構築しそこにデータをロード
することが可能
7
web server
web server
web server
EC2で生成 S3に集約 EMRで集計
FluentdS3Plugin
S3DistCp
hiveorstreaming
RDSに出力
/main?page=1
/main?page=2
/main?page=1
{“page”:”1”}
{“page”:”2”}
{“page”:”1”}
page1 t 2
page2 t 1
page | count
---------------
page1 | 2
page2 | 1
完成までは試行錯誤と場当たり処理の繰り返
し
現実的なソリューション
http://ja.splunk.com/
http://www.sumologic.com/ SaaS
Sumo Logic
分析グラフ作成例
~CloudFrontのログ on S3を材料に~
コレクタを記入すればログが読める
_collector=“コレクタ名”
“LogReduce”ボタンを押すと
集計ログ表示(次のスライ
ド)
集計ログ
642回似たログが集計され
た
SIN2に届いたログだけを表示させる
MB per Minute
| parse "t*t*t*t*t*t*t*.*t*t*t" as
ts, edge_loc, bytes, ip, method,
host, uri_stem, filetype, status,
referer
| timeslice 1m
| sum(bytes) as volume by
_timeslice
| volume/1024/1024 as volume
| sort by + _timeslice
| fields volume, _timeslice
ファイルタイプ別ダウンロード割合
| parse "t*t*t*t*t*t*t*.*t*t*t*/*%*t*" as ts, edge_loc, bytes, ip,
method, host, uri_stem, filetype, status, referer, user_agent,
ver,throwaway, uri_query
| sum(bytes) as size_mb by filetype
| size_mb/1024/1024 as size_mb
| sort by size_mb
| limit 10
ファイルタイプ別毎分転送サイズ
| parse "t*t*t*t*t*t*t*.*t*t*t*/*%*t*" as ts, edge_loc, bytes, ip, method, host,
uri_stem, filetype, status, referer, user_agent, ver,throwaway, uri_query
| timeslice 1m
| sum(bytes) as size by filetype, _timeslice
| transpose row _timeslice column filetype as js, css, png, gif, ico, html, jpg, xml
トップヒット数
_sourcecategory=streaming !connect !disconnect
| parse "t*t*t*t*t*t*t*t*t*t*t*t*%20*t*t*t*t*" as ts, edgeloc,
ip, event, bytes, status, clientid, uri_stem, uri_query, referrer,
page_url, user_agent, ua_version, sname, sname_query,
file_ext, sid
| count (*) as hits by sname | sort by hits
200と304以外のステータスコード可視化
* !200 !304
| parse regex "t(?<status>ddd?)th"
| timeslice 5m
| count by _timeslice, status
| transpose row _timeslice column status
エッジ毎のヒット数
| parse "t*t*t" as ts, edge_loc
| count (*) as hits by edge_loc
| sort by hits
200 vs それ以外
| parse regex "t(?<status>ddd?)th"
| timeslice 1m
| if(status = "200", 1,0) as statGood
| if(status <> "200", 1,0) as statOther
| sum(statGood) as good, sum(statOther) as bad by _timeslice
| sort by + _timeslice
22
web server
web server
web server
EC2で生成 S3に集約 EMRで集計
FluentdS3Plugin
S3DistCp
hiveorstreaming
RDSに出力
/main?page=1
/main?page=2
/main?page=1
{“page”:”1”}
{“page”:”2”}
{“page”:”1”}
page1 t 2
page2 t 1
page | count
---------------
page1 | 2
page2 | 1
ログ収集、解析
をあきらめない
完成までは試行錯誤と場当たり処理の繰り返
し

ログ解析をあきらめない、あるいはSumoLogicの紹介