Nginx作为一个Web服务器,虽然本身具有非常强大的性能,但是部分场景下会出现请求过慢的情况,这个时候就需要对日志进行分析,查看接口性能分析。虽然有诸如GoAccess、request-log-analyzer等强大的日志分析工具,但是日常还是需要掌握一些进本的Nginx日志分析命令。
IP统计相关
统计总共有多少IP访问
1
| awk '{print $1}' access.log | sort -n | uniq | wc -l
|
统计特定时间段内访问量
1
| grep "07/July/2021:[08-11]" access.log | awk '{print $1}' | sort -n | uniq | wc -l
|
查看访问频率最高的前N个IP
1
| awk '{print $1}' access.log | sort -n | uniq -c | sort -nr | head -n {$n}
|
查看访问次数大于N的IP
1
| awk '{print $1}' access.log | sort -n | uniq -c | awk '{if($1 > {$n}) print $0}' | sort -rn
|
查询IP的接口访问频率
1
| grep '8.8.8.8' access.log | awk '{print $7}' | sort | uniq -c | sort -rn
|
页面访问统计
查询访问频率前N的接口
1
| awk '{print $7}' access.log | sort | uniq -c | sort -rn | head n {$n}
|
排除指定接口查询访问频率前N的接口
1
| grep -v "www.google.com" access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head n {$n}
|
查询访问超过N次的接口
1
| awk '{print $7}' access.log | sort | uniq -c | awk '{if ($1 > {$N}) print $0}' | less
|
按时间维度统计访问量
统计前N个QPS
1
| awk '{print $4}' access.log | cut -c 14-21 | sort | uniq -c | sort -nr | head -n {$N}
|
统计前N个QPM
1
| awk '{print $4}' access.log | cut -c 14-18 | sort | uniq -c | sort -nr | head -n {$N}
|
统计前N个QPH
1
| awk '{print $4}' access.log | cut -c 14-15 | sort | uniq -c | sort -nr | head -n {$N}
|
接口性能分析
该命令需要配置Nginx的log_format
统计请求超过N秒的接口
1
| awk '{if($NF > {$N}) print $7}' access.log | sort | uniq -c | sort -nr | less
|
统计请求超过N秒复合正则的接口
1
| awk '{if($NF > {$N} && $7~/{pattern}/) print $7}' | sort | uniq -c | sort -nr | less
|
TCP连接统计
查看当前活跃的TCP连接
1
| netstat -tan | grep -i 'established' | grep ':443' | wc -l
|