监控 Nginx 流量,通常可以从日志分析、实时监控工具、可视化方案三个层面来做。下面按“从简单到专业”给你一个完整思路。
一般在:
/var/log/nginx/access.log
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
关键字段:
$body_bytes_sent:响应流量(字节)$request:请求方法和 URL$status:HTTP 状态码tail -f /var/log/nginx/access.log
watch -n 1 "wc -l /var/log/nginx/access.log"
tail -f /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr
awk '{sum+=$10} END {print sum/1024/1024 " MB"}' /var/log/nginx/access.log
(假设第10列是 body_bytes_sent)
yum install goaccess # CentOS
apt install goaccess # Ubuntu
goaccess /var/log/nginx/access.log -o /tmp/report.html --log-format=COMBINED
或实时终端:
goaccess /var/log/nginx/access.log --log-format=COMBINED -c
可看到:
Nginx → Filebeat → Logstash → Elasticsearch → Kibana
↓
Prometheus + Grafana
- type: log
paths:
- /var/log/nginx/access.log
location /nginx_status {
stub_status on;
allow 127.0.0.1;
deny all;
}
访问:
http://ip/nginx_status
能看到:
nginx-prometheus-exporter \
-nginx.scrape-uri=http://localhost/nginx_status
✅ 流量相关:
✅ 安全相关:
| 场景 | 推荐方式 |
|---|---|
| 临时排查 | tail + awk |
| 实时看板 | GoAccess |
| 生产环境 | Prometheus + Grafana |
| 深度分析 | ELK |
如果你是服务器运维 / 开发 / 安全审计场景,我可以给你一套可直接用的配置模板。