Linux:sedでapacheアクセスログを整形 のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Linux:sedでapacheアクセスログを整形 へ行く。
- 1 (2013-11-26 (火) 14:43:49)
- 2 (2013-11-26 (火) 14:51:04)
sedでapacheアクセスログを整形 †
apacheのアクセスログの整形はニーズがありそうなので、独立した記事にします。
apacheのcookieログを設定して、DrupalのセッションIDとアクセスパスを出力 †
こんな感じのログ設定で
LogFormat "%t %T %{cookie}i %{Referer}i -> %U" cookie
出力されたログをこんな感じのsedに喰わせるとちょっと幸せになれるかも。
sed -n -e 's/.*\(SESS[0-9a-zA-Z]\{32\}=[^;]*\);.*-> \(.*\)$/\1 \2/p' logfile
apacheのアクセスログ(combined)からアクセス時刻とURL(パラメータを除く)とステータスコードとレスポンスタイム(ms)を抽出する。 †
こんな感じで行けました!
cat access_log | sed -n -e 's/.*\[\([0-9]\{2\}\)\/\([A-Za-z]\{3\}\)\/\([0-9]\{4\}\):\([^ ]*\) .*GET \([^?]*\).*" \([0-9]\{3\}\) .* \([0-9]*\)[0-9]\{3\}$/\3\/\2\/\1 \4\t\5\t\6\t\7/p'
ポイントは以下の通り
-Excelに喰わせてそのまま処理できるように、日付フォーマットを整形 -URLそのまま出すと駄々長いため、?より前を出力(パラメータはカット) -レスポンスタイムはマイクロ秒で出力されるため、後ろ3桁を切り捨て(誤差とする)
出力結果サンプルは以下の通り。
2013/Nov/26 08:23:18 /access_location 200 627 2013/Nov/26 08:23:18 /access_location 200 824 2013/Nov/26 08:23:18 /access_location 200 604
うむ、なかなか便利w