温馨提示×

nginx日志如何监控流量

小樊
40
2026-09-11 13:25:55
栏目: 编程语言

监控 Nginx 流量,通常可以从日志分析、实时监控工具、可视化方案三个层面来做。下面按“从简单到专业”给你一个完整思路。


一、Nginx 日志基础(先确认日志内容)

1. 访问日志位置

一般在:

/var/log/nginx/access.log

2. 默认日志格式

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 状态码

二、命令行实时查看流量(临时/快速)

1. 实时查看访问

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

2. 统计当前 QPS

watch -n 1 "wc -l /var/log/nginx/access.log"

3. 实时统计流量(按 IP)

tail -f /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr

4. 统计某段时间总流量

awk '{sum+=$10} END {print sum/1024/1024 " MB"}' /var/log/nginx/access.log

(假设第10列是 body_bytes_sent)


三、使用 GoAccess 实时监控(推荐)

1. 安装

yum install goaccess   # CentOS
apt install goaccess   # Ubuntu

2. 实时终端监控

goaccess /var/log/nginx/access.log -o /tmp/report.html --log-format=COMBINED

或实时终端:

goaccess /var/log/nginx/access.log --log-format=COMBINED -c

可看到:

  • 实时流量(MB/s)
  • 请求数
  • 热门 URL
  • 状态码分布

四、ELK / Grafana 方案(生产级)

架构

Nginx → Filebeat → Logstash → Elasticsearch → Kibana
                              ↓
                         Prometheus + Grafana

1. Filebeat 收集日志

- type: log
  paths:
    - /var/log/nginx/access.log

2. Kibana 可监控

  • 总流量
  • 各接口流量
  • 异常 4xx / 5xx
  • 按地域/IP 分析

五、Nginx 自身模块监控(不依赖日志)

1. stub_status 模块

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

访问:

http://ip/nginx_status

能看到:

  • Active connections
  • Requests per second

六、Prometheus + Nginx Exporter(最推荐)

1. 安装 nginx-exporter

nginx-prometheus-exporter \
  -nginx.scrape-uri=http://localhost/nginx_status

2. Grafana 面板

  • 实时 QPS
  • 带宽
  • 连接数
  • 错误率

七、常见监控指标建议

✅ 流量相关:

  • 总入站/出站流量
  • 单 IP 流量异常
  • 大文件下载监控

✅ 安全相关:

  • 高频 IP
  • 异常 UA
  • 扫描行为(大量 404)

八、简单总结

场景 推荐方式
临时排查 tail + awk
实时看板 GoAccess
生产环境 Prometheus + Grafana
深度分析 ELK

如果你是服务器运维 / 开发 / 安全审计场景,我可以给你一套可直接用的配置模板。

0 踩