如果需要得到请求处理的时间,需要在nginx log 里面加上$request_time,下面是我的log_format
nginx.conf配置修改
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_agent" "$http_x_forwarded_for" "$request_time"';
nginx -s reload
修改之后重启nginx,查看nginx log的时候,就能看到nginx处理请求所花的时间了,这个时间基本就是后端所花的时间,所以可以根据这个字段来得到响应慢的请求
获取pv数
cat /usr/local/nginx/logs/access.log | wc -l
获取ip数
cat /usr/local/nginx/logs/access.log | awk '{print $1}' | sort -k1 -r | uniq | wc -l
获取最耗时的请求时间、url、耗时,前10名, 可以修改后面的数字获取更多,不加则获全部
cat /usr/local/class/logs/access.log | awk '{print $4,$7,$NF}' | awk -F '"' '{print $1,$2,$3}' | sort -k3 -rn | head -10
### 获取某一时刻的请求数量,可以把秒去掉得到分钟的数据,把分钟去掉得到小时的数据,以此类推
cat /usr/local/class/logs/access.log | grep 2017:13:28:55 | wc -l
获取每分钟的请求数量,输出成csv文件,然后用excel打开,可以生成柱状图
cat /usr/local/class/logs/access.log | awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}' > access.csv
cat /usr/local/class/logs/access.log | awk '{print substr($4,14,5)}' | uniq -c | awk '{print $2","$1}'