在 Debian 上监控 Nginx 日志,常见做法分为 实时查看、日志分析、自动监控与告警 三类。下面按实用程度一步步说明。
Debian 下 Nginx 日志通常在:
/var/log/nginx/access.log # 访问日志
/var/log/nginx/error.log # 错误日志
如果你用了 sites-enabled 自定义配置,也可能在其他路径。
查看日志路径:
nginx -T | grep access_log
nginx -T | grep error_log
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
只看错误:
tail -f /var/log/nginx/error.log | grep error
multitail /var/log/nginx/access.log /var/log/nginx/error.log
安装:
apt install multitail
tail -f /var/log/nginx/access.log | awk '$9 ~ /404|500/'
tail -f /var/log/nginx/access.log | grep 1.2.3.4
tail -f /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c
journalctl -u nginx -f
apt install goaccess
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED
实时终端模式:
goaccess /var/log/nginx/access.log --log-format=COMBINED -o report.html --real-time-html
浏览器打开 report.html 即可。
pip install ngxtop
ngxtop
查看请求数、状态码、URL:
ngxtop top remote_addr
apt install fail2ban
示例(监控 404 扫描):
[nginx-404]
enabled = true
filter = nginx-404
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 60
bantime = 3600
nginx-prometheus-exporter 采集指标if tail -n 100 /var/log/nginx/error.log | grep -q "crit"; then
echo "Nginx error!" | mail -s "Nginx Alert" admin@domain.com
fi
Debian 默认用 logrotate:
cat /etc/logrotate.d/nginx
手动执行:
logrotate -f /etc/logrotate.d/nginx
| 场景 | 推荐 |
|---|---|
| 临时排错 | tail -f |
| 日常运维 | ngxtop |
| 可视化 | GoAccess |
| 安全防护 | fail2ban |
| 企业监控 | Prometheus + Grafana |
如果你愿意,我可以:
你现在是 个人服务器、生产环境还是学习用?