在 Debian 系统上监控 Nginx 日志,常见做法从“实时查看”到“长期分析、告警”都有。下面按使用场景给你一个比较完整的方案。
Debian 默认路径一般是:
/var/log/nginx/access.log
/var/log/nginx/error.log
如果你自定义过 nginx.conf,以实际配置为准:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
只看最新 100 行:
tail -n 100 -f /var/log/nginx/access.log
tail -f /var/log/nginx/access.log /var/log/nginx/error.log
grep "1.2.3.4" /var/log/nginx/access.log
awk '$9 == 404' /var/log/nginx/access.log
或:
grep " 404 " /var/log/nginx/access.log
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
如果 Nginx 是通过 systemd 启动的:
journalctl -u nginx -f
查看最近 100 条:
journalctl -u nginx -n 100
Debian 默认使用 logrotate 管理 Nginx 日志。
cat /etc/logrotate.d/nginx
常见配置:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx
endscript
}
✅ 防止日志把磁盘写满
✅ 自动压缩历史日志
监控错误日志,封禁恶意 IP。
apt install fail2ban
示例(防止 404 扫描):
[nginx-badbots]
enabled = true
filter = nginx-badbots
logpath = /var/log/nginx/access.log
maxretry = 10
bantime = 3600
强烈推荐
apt install goaccess
实时分析:
goaccess /var/log/nginx/access.log -c
生成 HTML:
goaccess /var/log/nginx/access.log \
-o /var/www/html/report.html \
--log-format=COMBINED
浏览器访问:
http://服务器IP/report.html
适合服务器集群:
监控指标:
| 指标 | 含义 |
|---|---|
| 5xx 错误 | 服务异常 |
| 慢请求 | 性能问题 |
| 单 IP 请求数 | 爬虫 / 攻击 |
| 404 数量 | 漏洞扫描 |
| 带宽 | 流量异常 |
✅ 个人 / 小项目
tail -f + logrotate + GoAccess
✅ 生产环境
logrotate + fail2ban + Prometheus + Grafana
✅ 安全监控
fail2ban + 自定义脚本
如果你愿意,我可以:
你现在的使用场景是哪种?