监控 Nginx 异常日志,通常可以从日志收集、异常识别、实时告警、可视化四个层面来做。下面按常见场景给你一套可落地方案。
Nginx 常见日志:
4xx、5xx 比例过高request_time 偏大crit / alert / emergconnect() failedupstream timed outtoo many open filespermission deniedtail -f /var/log/nginx/error.log
awk '$9 ~ /5[0-9][0-9]/' /var/log/nginx/access.log
统计 5xx 数量:
grep -c " 500 \| 502 \| 503 \| 504 " /var/log/nginx/access.log
架构:
Nginx → Filebeat → Logstash → Elasticsearch → Kibana
监控内容:
Kibana 可做:
使用 nginx-prometheus-exporter
暴露指标:
nginx_http_requests_totalnginx_http_requests_total{status="500"}Grafana 面板:
✅ 适合业务指标型监控
Nginx → Promtail → Loki → Grafana
优点:
示例查询:
{job="nginx"} |= "error"
{job="nginx"} |~ "502|504|timeout"
critlog_format main '$remote_addr - $request_time - $status';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
| 场景 | 推荐方案 |
|---|---|
| 单台服务器 | tail + 脚本 + 钉钉 |
| 中小团队 | Loki + Grafana |
| 生产集群 | ELK / Prometheus |
| 云原生 | Nginx Ingress + Prometheus |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置示例。