博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx之12火眼金睛 - (状态监控 & 日志分析)
阅读量:6900 次
发布时间:2019-06-27

本文共 1845 字,大约阅读时间需要 6 分钟。

什么是Nginx状态监控

当Nginx在线上运行时,我们想监控Nginx整理的访问及性能情况,但需要用ssh登陆到该主机中进行使用命令进行查看,这种操作无疑是比较繁琐的,但Nginx提供了一个内置的状态信息监控页面可用于监控Nginx的整体访问情况,这个功能由ngx_http_stub_status_module模块进行实现。

如何启用监控模块

使用nginx -V命令检查编译的参数,如果有--with-http_stub_status_module此模块的,就代码已经启用了status功能,如果没有可以在编译时加上此编译的参数。

在 http段中,我们加入server段监听主机为本地及端口为80的配置,并在location段中指定访问的uri为status时匹配到我们配置的nginx status页面。

server {    listen 80;    server_name localhost;    location /status {       stub_status on;    }}

查看状态监控信息

image

#信息详解active connections:当前的客户端活动连接数(包含正在等待的客户端连接),相当于TCP连接状态处于Established和SYN_ACKserver accepts handled requests:accepts: 已接受的客户端连接总数,即已被worker进程接收的连接handled: 已被处理的连接总数requests: 客户端的http请求总数reading: 当前正在读取的http请求数(读取到http请求首部)writing:当前准备响应的连接数(写入到http响应首部)waiting: 当前处于等待的空闲客户端请求数, 等待的时间为Reading和Writing之间的间隔

什么是访问日志

访问日志是记录Nginx接受用户请求及处理过程中一系列的日志记录,可以通过这些日志分析到用户IP、位置、在什么时间访问、使用什么操作系统、使用什么浏览器访问了什么页面等,从进行我们一系列的分析。

首先我们了解一下日志定义格式及日志详解

#日志定义格式log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                               '$status $body_bytes_sent "$http_referer" '                               '"$http_user_agent" "$http_x_forwarded_for"';
#日志字段详解$remote_addr: 客户端的ip地址$remote_user: 用于记录远程客户端的用户名称$time_local: 用于记录访问时间和时区$request: 用于记录请求的url以及请求方法$status: 响应状态码$body_bytes_sent: 给客户端发送的文件主体内容字节数$http_referer: 可以记录用户是从哪个链接访问过来的$http_user_agent: 用户所使用的浏览器信息$http_x_forwarded_for: 可以记录客户端IP,通过代理服务器来记录客户端的ip地址

如何进行分析

在以上了解了日志中每一个字段的定义,可以根据日志做出一些类似以下的分析:

1.根据访问IP统计UV
cat /usr/local/nginx/logs/access.log |awk '{print $1}' |sort |uniq -c |wc -l

2.统计访问URL统计PV

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

3.查询访问最频繁的IP(前10)

cat /usr/local/nginx/logs/access.log |awk '{print $1}' |sort | uniq -c |sort -n -k 1 -r |head -n10

4.查询访问最频繁的URL(前10)

cat /usr/local/nginx/logs/access.log |awk '{print $7}' |sort | uniq -c |sort -n -k 1 -r| head -n10

转载地址:http://qkvdl.baihongyu.com/

你可能感兴趣的文章