插件窝 干货文章 Nginx监控实时状态配置,及时了解网站运行情况

Nginx监控实时状态配置,及时了解网站运行情况

Nginx 连接 配置 监控 881    来源:    2025-04-17

Nginx实时状态监控配置指南

1. 启用Nginx状态模块

Nginx自带了一个状态模块ngx_http_stub_status_module,可以实时显示基本的连接和请求信息。

配置步骤:

  1. 确认Nginx编译时已包含该模块:

    nginx -V 2>&1 | grep -o with-http_stub_status_module
    
  2. 在Nginx配置文件中添加状态监控位置(通常在server块中):

    server {
       listen 80;
       server_name yourdomain.com;
    
       location /nginx_status {
           stub_status on;
           access_log off;
           allow 127.0.0.1;    # 只允许本地访问
           allow 192.168.1.0/24; # 或指定信任IP段
           deny all;
       }
    }
    
  3. 重新加载Nginx配置:

    nginx -s reload
    

2. 访问状态页面

访问http://yourdomain.com/nginx_status,你将看到类似以下输出:

Active connections: 291 
server accepts handled requests
 16630948 16630948 31070465 
Reading: 6 Writing: 179 Waiting: 106 
  • Active connections: 当前活跃连接数
  • accepts: 已接受的连接总数
  • handled: 已处理的连接总数
  • requests: 已处理的请求总数
  • Reading: 正在读取请求头的连接数
  • Writing: 正在写入响应的连接数
  • Waiting: 空闲连接数(keep-alive)

3. 高级监控方案

方案一:Prometheus + Grafana

  1. 安装Nginx Prometheus exporter:

    docker run -d -p 9113:9113 nginx/nginx-prometheus-exporter -nginx.scrape-uri=http://<nginx-ip>/nginx_status
    
  2. 配置Prometheus抓取指标:

    scrape_configs:
     - job_name: 'nginx'
       static_configs:
         - targets: ['exporter-ip:9113']
    
  3. 在Grafana中导入Nginx仪表板(如ID 12708)

方案二:ELK Stack (Elasticsearch + Logstash + Kibana)

  1. 配置Nginx日志格式:

    log_format json_combined escape=json
     '{"@timestamp":"$time_iso8601",'
     '"remote_addr":"$remote_addr",'
     '"request":"$request",'
     '"status":$status,'
     '"body_bytes_sent":$body_bytes_sent,'
     '"request_time":$request_time,'
     '"http_referrer":"$http_referer",'
     '"http_user_agent":"$http_user_agent"}';
    
  2. 配置Logstash管道处理Nginx日志

  3. 在Kibana中创建可视化仪表板

4. 实时监控工具推荐

  1. Netdata: 轻量级实时监控工具

    # 安装Netdata
    bash <(curl -Ss https://my-netdata.io/kickstart.sh)
    
  2. GoAccess: 实时日志分析工具

    goaccess /var/log/nginx/access.log -o /var/www/html/report.html --real-time-html --log-format=COMBINED
    
  3. Zabbix: 企业级监控方案,提供Nginx模板

5. 关键监控指标

指标 说明 健康阈值参考
请求率 每秒请求数 根据服务器规格而定
错误率 4xx/5xx比例 <1%
响应时间 平均响应时间 <500ms
活跃连接数 当前连接数 <worker_connections的80%
请求排队 等待连接数 持续>0可能有性能问题

6. 告警配置建议

  1. 5xx错误率超过1%
  2. 平均响应时间超过1秒
  3. 活跃连接数接近worker_connections限制
  4. 服务器负载持续高于CPU核心数

通过以上配置和工具,你可以全面监控Nginx的运行状态,及时发现并解决潜在问题,确保网站稳定运行。