Nginx日志分析
192.168.220.1 - - [01/May/2022:08:46:16 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" "-"
$remote_addr $1
$time_local $4
$request $7
$status $9
$body_bytes_sent $10
-
统计2022年5月1日PV量
grep '01/May/2022' /var/log/nginx/access.log |wc -l # 统计具体时间的PV量 awk '$4>="[01/May/2022:08:30:00" && $4<="[01/May/2022:08:40" {print $0}' /var/log/nginx/access.log |wc -l
-
统计2022年5月1日 访问ip的top10
grep '01/May/2022' access.log |awk '{ips[$1]++}END{for(i in ips){print i,ips[i]}}' |sort -k2 -rn|head -10
-
统计2022年5月1日 访问大于100次的IP
grep '01/May/2022' access.log |awk '{ips[$1]++}END{for(i in ips){if(ips[i]>=100)print i,ips[i]}}' grep '01/May/2022' access.log |awk '{ips[$1]++}END{for(i in ips){print i,ips[i]}}' |awk '$2>=10'
-
统计2022年5月1日 访问最多的10个页面($request top10)
grep '01/May/2022' access.log |awk '{urls[$7]++}END{for(i in urls){print i,urls[i]}}' |sort -k2 -rn|head -10
-
统计2022年5月1日 每个URL访问内容总大小($body_bytes_sent)
grep '01/May/2022' access.log |awk '{size[$7]+=$10}END{for(i in size){print i,size[i]}}' |sort -k2 -rn # 同时打印访问次数 grep '01/May/2022' access.log |awk '{urls[$7]++;size[$7]+=$10}END{for(i in size){print i,urls[i],size[i]}}' |sort -k2 -rn
-
统计2022年5月1日 每个IP访问状态码数量($status)
grep '01/May/2022' access.log |awk '{ip_status[$1" "$9]++}END{for(i in ip_status){print i,ip_status[i]}}' |sort -k1rn |head
-
统计2022年5月1日 IP访问状态码为404出现的次数
grep '01/May/2022' access.log |awk '{if($9=="404"){ip_status[$1" "$9]++}}END{for(i in ip_status){print i,ip_status[i]}}' |sort -k3rn
-
统计前一分钟的PV量
date=`date -d '-1 minute' +%d/%b/%Y:%H:%M`;awk -v date=$date '$0 ~ date {i++}END{print i}' access.log
-
统计2022年5月1日 各种状态码的数量
grep "01/May/2022" access.log |awk '{ip_code[$9]++}END{for(i in ip_code){print i,ip_code[i]}}' # 显示所占百分比 grep "01/May/2022" access.log |awk '{code[$9]++;total++}END{for(i in code){printf i" "code[i]" %.2f%\n",code[i]/total}}'