插件窝 干货文章 如何监控nginx服务状态

如何监控nginx服务状态

Nginx 监控 status 连接 251    来源:    2025-04-03

监控 Nginx 服务状态是确保 Web 服务高可用的关键步骤。以下是全面的监控方案,涵盖基础检查、状态模块、日志分析和主流监控工具集成:


一、基础服务状态监控

1. 进程检查

# 检查Nginx主进程
ps aux | grep nginx

# 使用systemctl(系统服务)
systemctl status nginx

# 使用init.d(旧系统)
service nginx status

2. 端口监听验证

ss -tulnp | grep nginx  # 推荐
或
netstat -tulnp | grep nginx

二、Nginx 内置状态模块

1. 启用 stub_status 模块

nginx.conf 中添加:

server {
    listen 80;
    server_name localhost;

    location /nginx_status {
        stub_status on;
        allow 127.0.0.1;  # 限制访问IP
        deny all;
    }
}

重启后访问 http://server_ip/nginx_status 将看到:

Active connections: 3 
server accepts handled requests
 100 100 200 
Reading: 0 Writing: 1 Waiting: 2

2. 关键指标说明

  • Active connections: 当前活跃连接数
  • accepts/handled/requests: 总连接数/成功处理数/总请求数
  • Reading: 读取请求头的连接数
  • Writing: 发送响应的连接数
  • Waiting: 空闲keep-alive连接数

三、第三方监控工具集成

1. Prometheus + Grafana 方案

1) 安装 nginx-prometheus-exporter

docker run -d -p 9113:9113 nginx/nginx-prometheus-exporter \
  -nginx.scrape-uri=http://nginx_server/nginx_status

2) Prometheus 配置示例:

scrape_configs:
  - job_name: 'nginx'
    static_configs:
      - targets: ['exporter_ip:9113']

3) Grafana 仪表板导入 ID:12708(官方Nginx看板)

2. Zabbix 监控

使用 nginx_status 模板: 1. 导入 Zabbix Nginx 模板 2. 配置自动发现规则监控多实例


四、日志分析与监控

1. 关键日志指标

# 监控5xx错误
tail -f /var/log/nginx/error.log | grep "HTTP/1.1\" 5"

# 统计请求TOP 10
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -10

2. ELK/EFK 方案

  • 使用 Filebeat 收集日志
  • Logstash 解析日志格式
  • Kibana 展示实时仪表板

五、高级监控策略

1. 性能阈值告警

# 当活跃连接 > 500时触发(示例)
if [ $(curl -s http://localhost/nginx_status | awk '/Active/ {print $3}') -gt 500 ]; then
    echo "High connections!" | mail -s "Nginx Alert" admin@example.com
fi

2. 自动化响应

# 自动重启服务(谨慎使用)
if ! pgrep nginx > /dev/null; then
    systemctl restart nginx
    echo "Nginx restarted at $(date)" >> /var/log/nginx_monitor.log
fi

六、推荐监控指标清单

指标类别 具体指标 告警阈值建议
可用性 服务进程状态 进程不存在时
连接数 Active connections > 80%最大worker_connections
错误率 5xx状态码比例 > 1%请求量
响应时间 upstream_response_time p95 > 500ms
流量 request_rate 突增300%

七、常见问题排查

  1. 监控端点无法访问

    • 检查 nginx_status 的IP白名单
    • 验证防火墙规则(firewall-cmd --list-all
  2. 指标数值异常

    • 高连接数:检查客户端是否使用keep-alive
    • 高错误率:排查后端服务健康状态
  3. 数据采集间隔

    • Prometheus建议:15s-30s采集间隔
    • 日志监控:实时流式处理

通过以上方案组合实施,可以实现从基础可用性监控到性能瓶颈分析的全方位覆盖。建议根据业务规模选择适合的工具组合,生产环境推荐使用 Prometheus + Grafana + ELK 的完整监控栈。