天天看点

shell编程——awk分析nginx日志

nginx测试日志文件

shell编程——awk分析nginx日志

javascript:void(0)

nginx日志字段说明

127.0.0.1 - - [31/Aug/2018:16:11:16 +0800] "GET /50x.html HTTP/1.1" 200 537 "-" "curl/7.29.0"

访问ip、访问时间、请求方式、请求url、响应状态码、响应body体大小、ua

根据访问ip进行统计

cat access.log | awk '{count[$1]++}END{for(ip in count){print ip,count[ip]}}'

cat access.log | awk '{count[$1]++}END{for(ip in count){print ip"\t"count[ip]}}'|sort -rnk 2

统计nginx的响应状态码

cat access.log|awk '{count[$9]++}END{for(ip in count){print ip,count[ip]}}'    #各个状态码数量

cat access.log|awk '{count[$9]++}END{for(status in count){print status,count[status]/NR*100"%"}}'  #比例统计

cat access.log|awk '{count[$9]++}END{for(status in count){print status"\t"int(count[status]/NR*100)"%"}}' #比例统计保留整数

根据ua统计

cat access.log|awk -F'"' '{print $(NF-1)}'

cat access.log|awk -F'"' '{count[$(NF-1)]++}END{for(ua in count){print ua,count[ua]}}'

根据时间统计,统计每分钟的访问量、每秒钟的访问量

cat access.log |awk '{print $4}'|awk -F':' '{print $1":"$2":"$3}'|awk '{count[$1]++}END{for(time in count){print time,count[time]}}' #统计每分钟的请求数

cat access.log|awk '{count[$4]++}END{ for(time in count){print time,count[time]} }' #每秒钟请求,并发

nginx日志过滤

cat access.log|awk '$9~/^2/' #状态码,正常请求

继续阅读