Nginx日志本身主要用于记录请求和错误信息,直接监控系统资源(如CPU、内存、磁盘I/O等)需结合系统工具或第三方模块。以下是具体方法:
启用stub_status模块,可获取活跃连接数、请求处理速度等基础信息,间接反映资源使用情况。
nginx.conf中添加:location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
http://服务器IP/nginx_status查看,示例输出:Active connections: 100
server accepts handled requests: 1000 1000 5000
Reading: 5 Writing: 20 Waiting: 75
Reading/Writing表示正在处理请求的连接数,Waiting表示空闲连接数,可辅助判断CPU/内存负载。需通过Linux系统工具获取CPU、内存、磁盘等详细数据,与Nginx日志结合分析:
top、htop命令查看Nginx进程的CPU和内存占用。ps -eo pid,cmd,%cpu,%mem | grep nginx筛选Nginx相关进程的资源占用。iostat -x 1查看磁盘读写速度,重点关注%util(磁盘利用率)和await(平均响应时间)。iotop定位高I/O进程,确认是否为Nginx日志写入或静态资源服务导致。iftop -i eth0查看网络接口的实时流量,判断Nginx的网络负载。nload监控网络吞吐量,识别带宽瓶颈。通过分析Nginx日志中的请求特征,定位可能引发资源瓶颈的请求模式:
access.log中筛选响应时间($request_time)超过阈值的请求,查看对应URI和客户端IP。awk -F ' ' '$10 > 1 {print $7, $10}' /var/log/nginx/access.log | sort -k2 -nr
error.log中的upstream timeout或connection refused等错误,可能指向后端服务响应慢或资源不足。nginx-prometheus-exporter采集Nginx指标(如请求率、连接数),结合Grafana可视化系统资源与Nginx性能的关联。Nginx日志侧重于请求层面的监控,系统资源监控需依赖Linux工具或第三方平台。建议通过stub_status获取基础状态,结合top、iostat等工具分析资源占用,再利用日志分析工具定位异常请求与资源瓶颈的关联。