awkでアクセスログ集計

Linux


アクセスログ集計するときのawkワンライナーメモ

前提となるデータ。access.tsv

アクション名 レスポンスタイム

アクション毎の平均レスポンスタイムを遅い順で表示

% awk ' { total[$1] += $2 } { count[$4]++ } END { for (x in total) { printf "%s\t%f sec\n", x, total[x]/count[x] } } ' access.tsv | expand -t 50 | sort -k2 -nr

アクション毎の最も遅いレスポンスタイムを遅い順で表示

% awk ' max[$1] < $2 { max[$1] = $2 } END { for (x in max) { printf "%s\t%f sec\n", x, max[x] } } ' access.tsv | expand -t 50 | sort -k 2 -nr

レスポンスタイムとアクセス数を乗算することで、ユーザへの不快度をスコア化

% awk ' { total[$1] += $2 } { count[$1]++ } END { for (x in total) { printf "%s\t%f\n", x, total[x]*count[x] } } ' access.tsv | expand -t 50 | sort -k 2 -nr

コメント