zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

Apacheの転送量カウントについて

AWSにオンプレミスからサービスを移行するとき、最近の流れだとまず
Cacoo(https://cacoo.com/)でネットワーク図を書いた上で、おもむろに
簡易見積もりツール(http://calculator.s3.amazonaws.com/index.html?lng=ja_JP
を開いて見積もりを始めることになるわけですが、この時EC2のデータ転送量
(特にデータ送信)をどれくらい載せるか、っていうのがドンブリだったので
今回Apacheアクセスログからカウントしてみました。

【作業内容】
http://cohakim.com/archives/1971
 Apacheのログから総転送量を算出する

$ cat az-nyan_access_log-* | awk '{ SUM += $5} END { print SUM/1024/1024 }'

※「転送量がGB単位で表示される」ってあるけどアクセスログの転送量は%bだとバイト単位なので
 「MB単位」の間違いだと思った。

上記を見て作業。

【追加のメモ】
apacheaccess_logがいずれの書式を利用しているかによりますが、
例えばcombined

> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

を利用していて、かつログローテーションしている場合は、%b(送信されたバイト数)が10番目なので

cat access_log.201406* | awk '{ SUM += $10} END { print SUM/1024/1024 }'

の様にして転送量(%bの部分)をMB単位で算出できます。

アクセスログが大きいところでやる場合は、ロードアベレージが跳ね上がるので、
 1日ずつとかでやってみてください。


ステータスコード30xで%bの所にハイフンとかあるけどSUM大丈夫?検証
例)

xxx.xxx.xxx.xxx - - [21/May/2014:12:27:17 +0900] "GET /hoge/fuga/hoge/button1.gif HTTP/1.1" 200 406 "http://hoge.fuga.hoge.jp/hoge/StyleSheet.css" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"
xxx.xxx.xxx.xxx - - [21/May/2014:12:27:17 +0900] "GET /hoge/fuga/hoge/button1.gif HTTP/1.1" 200 - "http://hoge.fuga.hoge.jp/hoge/StyleSheet.css" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"
xxx.xxx.xxx.xxx - - [21/May/2014:12:27:17 +0900] "GET /fuga/ascend.gif HTTP/1.1" 200 590 "http://hoge.fuga.hoge.jp/index.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0"

上記について

cat access_log_test | awk '{ SUM += $10} END { print SUM }'

→996
→ハイフンが含まれていたら無視してくれる模様。OK。