监控 Nginx 日志通常可以从实时查看、统计分析、报警监控、可视化几个层面来做。下面按常见场景给你一个较完整的方案。
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
# 只看 500 错误
tail -f /var/log/nginx/access.log | grep ' 500 '
# 只看某个 IP
tail -f /var/log/nginx/access.log | grep '192.168.1.1'
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
awk '{print $9}' access.log | sort | uniq -c | sort -nr
awk '{print $4}' access.log | cut -c 2-18 | uniq -c
yum install goaccess # CentOS
apt install goaccess # Ubuntu
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED -p /etc/goaccess/goaccess.conf
或终端实时:
goaccess /var/log/nginx/access.log --log-format=COMBINED -c
✅ 适合:单台服务器、快速看流量和错误
Nginx → Filebeat → Logstash/ES → Kibana
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
output.elasticsearch:
hosts: ["http://localhost:9200"]
✅ 适合:多服务器、长期存储、复杂分析
nginx-prometheus-exportervts 模块(nginx-module-vts)✅ 适合:QPS、连接数、状态码比例等指标监控
/etc/logrotate.d/nginx
示例:
/var/log/nginx/*.log {
daily
rotate 14
compress
missingok
notifempty
sharedscripts
postrotate
nginx -s reopen
endscript
}
| 场景 | 推荐方案 |
|---|---|
| 个人 / 小站 | tail + GoAccess |
| 中小型 | GoAccess + 报警脚本 |
| 企业级 | Filebeat + ES + Kibana |
| 运维指标 | Prometheus + Grafana |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置文件。