[Shell] 最近よく使うApacheログのワンライナー解析
2018年12月27日このところ、ログファイルの解析をよくやる場面が増えてます。
以前から、元々テキストファイルを扱うことが多いのですが、年末ってこともあるので、備忘として何個か載せておきます。
特定の IP からのアクセスだけを抽出
grep “^127.0.0.1” /var/log/httpd/access_log
上記から画像やら CSS やらへのアクセスを除外
grep “^127.0.0.1” /var/log/httpd/access_log | grep -ive “GET /.*\.\(css\|js\|jpg\|gif\|png\|swf\|ico\)\ HTTP”
tail と組み合わせる事で特定の IP からのアクセスをリアルタイムに監視
tail -f /var/log/httpd/access_log | grep “^127.0.0.1” | grep -ive “GET /.*\.\(css\|js\|jpg\|gif\|png\|swf\|ico\)\ HTTP”
アクセス元 IP の一覧
cat /var/log/httpd/access_log | cut -d ” ” -f 1 | sort | uniq
ユーザエージェントの一覧
cat /var/log/httpd/access_log | awk -F ‘”‘ ‘{ print $6 }’ | sort | uniq
主要なブラウザ毎のアクセス数
for UA in MSIE Firefox Chrome; do COUNT=`grep “$UA” /var/log/httpd/access_log | wc -l`; echo “$UA : $COUNT”; done
特定ファイルへのアクセス数を抽出
$ cat /var/log/httpd/access.log | grep favicon.ico | wc -l
特定のIPアドレスからのアクセスを抽出し CSS やらへのアクセスを除外し、さらにはbotも除外
grep “^127.0.0.1” access_log | grep -ive “GET /.*\.\(css\|js\|jpg\|gif\|png\|swf\|ico\|Baiduspider|server-status|Ask Jeeves|Yeti|Yahoo!Slurp|Mediapartners-Google|Googlebot|Plagger|Twiceler|Y!J-BSC|Feedfetcher-Google|AMZNKAssocBot|livedoor HttpClient|Fastladder FeedFetche|FreshReader)\ HTTP”
他にも多くのコマンドを使いますが、ワンライナーで出来ると便利なことが多く、即席での解析力を上げるという意味でも、ぜひ活用ください。
あとは…
主に、grepとawk中心なのですが。他には、sed、cut、sort、uniq、辺りもよく使ってます。その他の場面だと、Shell化してしまって、ループや日付でごにょごにょとやることも多いです。
恐らく、正規表現中心になると思うんですが、表記が割とバラバラなところもあるので、正規表現を使う場合は、それぞれの関数・環境でマニュアルはザッと目を通してくださいね!