トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Linux:sedでapacheアクセスログを整形 のバックアップ(No.1)


sedの使い方

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