监控 Nginx 状态可以从进程状态、连接数、请求量、性能、日志、系统资源等多个层面来做。下面按常用程度给你一个完整方案,从简单到专业。
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 -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
含义:
✅ 适合做基础监控和告警
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
tail -f /var/log/nginx/error.log
重点监控:
ps aux | grep nginx
ss -lntp | grep nginx
ss -ant | grep :80 | wc -l
Nginx → nginx-prometheus-exporter → Prometheus → Grafana
docker run -d \
-p 9113:9113 \
nginx/nginx-prometheus-exporter:latest \
--nginx.scrape-uri=http://127.0.0.1/nginx_status
scrape_configs:
- job_name: nginx
static_configs:
- targets: ["localhost:9113"]
✅ 可监控:
stub_status常见 Dashboard 指标:
如果你用的是 Nginx Plus:
/api/status| 类型 | 指标 |
|---|---|
| 连接 | Active / Waiting / Writing |
| 请求 | QPS、总请求数 |
| 错误 | 5xx、4xx |
| 性能 | 响应时间 |
| 系统 | CPU、内存、FD |
| 服务 | Nginx 进程存活 |
✅ 基础监控
stub_status + 日志
✅ 生产环境
Prometheus + nginx-exporter + Grafana
✅ 企业级
Nginx Plus 或 自建 APM
如果你愿意,我可以:
你现在用的是 哪种环境(裸机 / Docker / K8s)?