2011年7月25日月曜日

AWStatsでCloudFrontのログを解析

スズキです。

下記のログのマージ&ソート(日付)をやりましたが、
CloudFrontのログとAWStatsを使ったログのマージ&ソート(日付)
引き続き、AWStatsでの解析も試してみます。

といっても、下記のように設定ファイルを作成し、

$ su -
Password:
# cd /opt/local/etc/awstats/
# cp awstats.model.conf awstats.cloudfront.conf

設定項目を下記のようにし、

LogFile="/opt/local/www/awstats/tools/logresolvemerge.pl /Users/suzuki/Temp/*.gz |"
LogFormat="%time2 %cluster %bytesd %host %method %virtualname %url %code %referer %ua %query"
LogSeparator="\t"
SiteDomain="dhisjetezncwd.cloudfront.net"
HostAliases="dhisjetezncwd.cloudfront.net"
DNSLookup=1
ShowClusterStats=1

下記のように実行すれば解析され、結果が"awstats.pl"と同じディレクトリ内に
"awstats042011.cloudfront.txt"のようなファイルとして出力されます。

# /opt/local/www/awstats/cgi-bin/awstats.pl -config=cloudfront
Create/Update database for config "/opt/local/etc/awstats/awstats.cloudfront.conf" by AWStats version 6.9 (build 1.925)
From data in log file "/opt/local/www/awstats/tools/logresolvemerge.pl /Users/suzuki/Dropbox/suz-lab/common/tmp/log/*.gz |"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 135
 Found 0 dropped records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 135 new qualified records.

ここでのポイントは、とにかく設定項目なので一つずつ説明していきます。

LogFile
LogFile="/opt/local/www/awstats/tools/logresolvemerge.pl /Users/suzuki/Temp/*.gz |"

ログファイルを指定します。
ここでは下記のような複数のCloudFrontのログファイルをマージする必要があるので、
下記の内容を反映した形にします。
CloudFrontのログとAWStatsを使ったログのマージ&ソート(日付)

LogFormat
LogFormat="%time2 %cluster %bytesd %host %method %virtualname %url %code %referer %ua %query"

ログのフォーマットを指定します。実際のCloudFrontのログファイルは下記の通りです。
(詳しくは下記を参考にして下さい)
Log File Format

#Version: 1.0
#Fields: date time x-edge-location sc-bytes c-ip cs-method cs(Host) cs-uri-stem sc-status cs(Referer) cs(User-Agent) cs-uri-query
2010-07-20 10:05:00 NRT4 570 219.117.209.225 GET dhisjetezncwd.cloudfront.net /img/test.jpg 304 - Mozilla/5.0%20(Macintosh;%20U;%20Intel%20Mac%20OS%20X%2010_6_4;%20en-US)%20AppleWebKit/533.4%20(KHTML,%20like%20Gecko)%20Chrome/5.0.375.99%20Safari/533.4 -
2010-07-20 10:05:00 NRT4 872 219.117.209.225 GET dhisjetezncwd.cloudfront.net /favicon.ico 404 - Mozilla/5.0%20(Macintosh;%20U;%20Intel%20Mac%20OS%20X%2010_6_4;%20en-US)%20AppleWebKit/533.4%20(KHTML,%20like%20Gecko)%20Chrome/5.0.375.99%20Safari/533.4 -

ですので次のようにマッピングする必要があります。

date time       : %time2       : タイムスタンプ (yyyy-mm-dd hh:mm:ss)
x-edge-location : %cluster     : 複数マシンを利用している場合のマシンID
sc-bytes        : %bytesd      : レスポンスのバイト数
c-ip            : %host        : クライアントのIP
cs-method       : %method      : HTTPメソッド (GET/POST/...)
cs(Host)        : %virtualname : バーチャルホスト名
cs-uri-stem     : %url         : アクセスパス
sc-status       : %code        : ステータスコード
cs(Referer)     : %referer     : リファラー
cs(User-Agent)  : %ua          : User Agent (IE/Firefox/...)
cs-uri-query    : %query       : Query String (アクセスパスの?の後ろ)

※ここでは、どのエッジサーバにアクセスされたか?が記録される、
"x-edge-location"に"%cluster"を割り当ててみました。

LogSeparator
LogSeparator="\t"

CloudFrontのログはタブ区切りなので、上記のように指定します。

SiteDomain / HostAliases
SiteDomain="dhisjetezncwd.cloudfront.net"
HostAliases="dhisjetezncwd.cloudfront.net"

解析対象のドメイン(ホスト)名を指定しています。

DNSLookup
DNSLookup=1

IPアドレスの名前解決を行います。(行わない場合は0です)

ShowClusterStats
ShowClusterStats=1

クラスタ(%cluster)に関する統計情報を表示します。

実際に出力結果(awstats042011.cloudfront.txt)を確認すると、

...
# Cluster ID - Pages - Hits - Bandwidth
BEGIN_CLUSTER 7
JFK1 1 2 871
LAX1 4 4 5285
AMS1 2 2 3546
STL2 2 2 3546
MIA3 3 4 4417
FRA2 114 114 118076
NRT4 7 7 11556
END_CLUSTER
...

といった感じで、エッジサーバごとの統計も確認できることがわかります。

でも、なぜかHTMLファイルには反映されない...
--------
http://www.suz-lab.com

0 コメント: