温馨提示×

怎样监控nginx状态

小樊
40
2026-08-17 21:32:34
栏目: 编程语言

监控 Nginx 状态可以从进程状态、连接数、请求量、性能、日志、系统资源等多个层面来做。下面按常用程度给你一个完整方案,从简单到专业。


一、使用 Nginx 自带状态模块(最常用)

1️⃣ 开启 stub_status 模块

适用于:查看连接数、请求数、并发情况

检查是否支持

nginx -V 2>&1 | grep stub_status

配置示例

server {
    listen 80;
    server_name localhost;

    location /nginx_status {
        stub_status;
        allow 127.0.0.1;
        deny all;
    }
}

重载 Nginx

nginx -s reload

访问状态

curl http://127.0.0.1/nginx_status

输出示例:

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

含义:

  • Active connections:当前活跃连接数
  • accepts:已接受的连接数
  • handled:已处理的连接数
  • requests:总请求数
  • Reading / Writing / Waiting:连接状态

适合做基础监控和告警


二、监控 Nginx 日志(非常重要)

1️⃣ 访问日志分析

tail -f /var/log/nginx/access.log

常用统计

# 每秒请求数
awk '{print $4}' access.log | cut -c 14-21 | sort | uniq -c
# 统计 HTTP 状态码
awk '{print $9}' access.log | sort | uniq -c | sort -nr
# 统计访问最多的 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head

2️⃣ 错误日志监控

tail -f /var/log/nginx/error.log

重点监控:

  • 499(客户端断开)
  • 502 / 503 / 504
  • upstream 超时

三、系统级监控(推荐)

1️⃣ 进程状态

ps aux | grep nginx

2️⃣ 端口监听

ss -lntp | grep nginx

3️⃣ 连接数监控

ss -ant | grep :80 | wc -l

四、使用监控工具(生产环境推荐)

✅ 1. Prometheus + Nginx Exporter(最佳实践)

架构

Nginx → nginx-prometheus-exporter → Prometheus → Grafana

安装 exporter

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

Prometheus 配置

scrape_configs:
  - job_name: nginx
    static_configs:
      - targets: ["localhost:9113"]

✅ 可监控:

  • 请求 QPS
  • 连接数
  • 状态码分布
  • Upstream 状态

✅ 2. Zabbix 监控 Nginx

  • 使用 stub_status
  • 自定义 key
  • 自带图形和告警

五、Grafana 可视化(强烈推荐)

常见 Dashboard 指标:

  • QPS
  • 并发连接数
  • 请求延迟
  • 4xx / 5xx 比例
  • 后端 upstream 健康状态

六、Nginx Plus(企业版)

如果你用的是 Nginx Plus

  • 自带 /api/status
  • 实时流量、缓存、SSL、健康检查
  • 无需额外 exporter

七、推荐监控指标清单 ✅

类型 指标
连接 Active / Waiting / Writing
请求 QPS、总请求数
错误 5xx、4xx
性能 响应时间
系统 CPU、内存、FD
服务 Nginx 进程存活

八、简单告警建议

  • Active connections > 阈值
  • 5xx 错误率 > 1%
  • Nginx 进程不存在
  • upstream 超时

九、总结(推荐组合)

基础监控

stub_status + 日志

生产环境

Prometheus + nginx-exporter + Grafana

企业级

Nginx Plus 或 自建 APM

如果你愿意,我可以:

  • ✅ 给你 Prometheus + Grafana Dashboard JSON
  • ✅ 帮你写 Zabbix 监控模板
  • ✅ 教你 Nginx 性能调优 + 监控联动

你现在用的是 哪种环境(裸机 / Docker / K8s)

0