前回、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 ...
上記のように、エッジサーバごとの統計も確認できることがわかります。