server { listen 80; server_name default_server; location /status { stub_status on; allow 114.247.125.227; }}

allow配置只许可指定的Ip才能访问nginx status功能,去掉便是不限定。
重启Nginx之后,浏览器访问http://{IP}/status查看状态监控信息

Active connections:当前的客户端活动连接数(包含正在等待的客户端连接),相称于TCP连接状态处于Established和SYN_ACKaccepts: 已接管的客户端连接总数,即已被worker进程吸收的连接handled: 已被处理的连接总数requests: 客户真个http要求总数Reading: 当前正在读取的http要求数(读取到http要求首部)Writing: 当前准备相应的连接数(写入到http相应首部)Waiting: 当前处于等待的空闲客户端要求数, 等待的韶光为Reading和Writing之间的间隔

采集到Nginx数据之后就可以用监控工具给监控起来了。

2、日志剖析

Nginx默认的日志格式配置可以在/etc/nginx/nginx.conf中找到

nginx日志监控phpNginx状况监控及日记剖析 GraphQL

log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" $request_time $upstream_response_time';

打印的日志实例

39.105.66.117 - mp [11/Sep/2019:19:03:01 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.040 0.04039.105.66.117 - mp [11/Sep/2019:19:03:08 +0800] "POST /salesplatform-gateway/users HTTP/1.1" 200 575 "-" "Apache-HttpClient/4.5.5 (Java/1.8.0_161)" "-" 0.008 0.008$remote_addr: 客户真个ip地址$remote_user: 用于记录远程客户真个用户名称$time_local: 用于记录访问韶光和时区$request: 用于记录要求的url以及要求方法$status: 相应状态码$body_bytes_sent: 给客户端发送的文件主体内容字节数$http_referer: 可以记录用户是从哪个链接访问过来的$http_user_agent: 用户所利用的浏览器信息$http_x_forwarded_for: 可以记录客户端IP,通过代理做事器来记录客户真个ip地址$request_time: 指的是从接管用户要求的第一个字节到发送完相应数据的韶光,即$request_time包括吸收客户端要求数据的韶光、后端程序相应的韶光、发送相应数据给客户真个韶光$upstream_response_time: 用于吸收来自上游做事器的相应的韶光常用剖析命令

1、根据访问IP统计UV

awk'{print $1}'paycenteraccess.log|sort-n | uniq | wc -l

2、调查最频繁的IP(前10)

awk '{print$1}' /var/log/nginx/access.log |sort-n |uniq -c|sort-rn | head -n10

3、查看某一韶光段的IP访问量(1-8点)

awk '$4>="[25/Mar/2020:01:00:00"&& $4<="[25/Mar/2020:08:00:00"' /var/log/nginx/access.log | awk '{print$1}' |sort| uniq -c|sort-nr |wc -l

4、查看访问100次以上的IP

awk '{print$1}' /var/log/nginx/access.log |sort-n |uniq -c|awk '{if($1>100)print$0}'|sort-rn

5、查看指定ip访问过的url和访问次数

grep"39.105.67.140"/var/log/nginx/access.log|awk '{print$7}' |sort|uniq -c|sort-n -k1-r

6、根据访问URL统计PV

cat /var/log/nginx/access.log|awk'{print $7}'|wc -l

7、调查最频繁的URL(前10)

awk '{print$7}' /var/log/nginx/access.log |sort|uniq -c|sort-rn | head -n10

8、查看访问最频的URL([打消/api/appid])(前10)

grep -v'/api/appid'/var/log/nginx/access.log|awk'{print $7}'|sort|uniq -c |sort-rn | head -n10

9、查看页面访问次数超过100次的页面

cat /var/log/nginx/access.log| cut -d' '-f7|sort|uniq -c | awk'{if ($1 > 100) print $0}'| less

10、查看最近1000条记录,访问量最高的页面

tail -1000/var/log/nginx/access.log |awk '{print$7}'|sort|uniq -c|sort-nr|less

11、统计每小时的要求数,top10的韶光点(精确到小时)

awk '{print$4}' /var/log/nginx/access.log |cut -c14-15|sort|uniq -c|sort-nr|head -n10

12、统计每分钟的要求数,top10的韶光点(精确到分钟)

awk '{print$4}' /var/log/nginx/access.log |cut -c14-18|sort|uniq -c|sort-nr|head -n10

13、统计每秒的要求数,top10的韶光点(精确到秒)

awk '{print$4}' /var/log/nginx/access.log |cut -c14-21|sort|uniq -c|sort-nr|head -n10

14、查找指定时间段的日志

awk'$4>="[25/Mar/2020:01:00:00"&&$4<="[25/Mar/2020:08:00:00"' /var/log/nginx/access.log

15、列出传输韶光超过 0.6 秒的url,显示前10条

cat/var/log/nginx/access.log |awk'(substr($NF,2,5) > 0.6){print$4,$7,substr($NF,2,5)}'| awk -F'"''{print$1,$2,$3}'|sort -k3 -rn | head -10

16、列出/api/appid要求韶光超过0.6秒的韶光点

cat/var/log/nginx/access.log |awk'(substr($NF,2,5) > 0.6 &&$7~/\/api\/appid/){print$4,$7,substr($NF,2,5)}'| awk -F'"''{print$1,$2,$3}'|sort -k3 -rn | head -10

17、获取前10条最耗时的要求韶光、url、耗时

cat/var/log/nginx/access.log |awk'{print$4,$7,substr($NF,2,5)}'| awk -F'"''{print$1,$2,$3}'| sort -k3 -rn | head -10