温馨提示×

debian nginx日志如何监控

小樊
37
2026-10-04 07:59:27
栏目: 智能运维

在 Debian 上监控 Nginx 日志,常见做法分为实时查看、日志分析、异常告警、可视化几个层面。下面按实用程度给你一套方案。


一、基础:实时查看 Nginx 日志

Nginx 默认日志路径(Debian):

/var/log/nginx/access.log
/var/log/nginx/error.log

1. 实时跟踪

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

2. 只看错误

tail -f /var/log/nginx/error.log | grep error

二、常用命令行监控(轻量级)

1. 统计访问最多的 IP

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

2. 统计状态码分布

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

3. 监控 5xx 错误

tail -f /var/log/nginx/access.log | awk '$9 ~ /^5/'

三、使用 GoAccess(推荐,实时可视化)

安装

sudo apt update
sudo apt install goaccess

实时终端监控

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

或直接终端模式:

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

✅ 优点:

  • 实时
  • 无需数据库
  • 适合单台服务器

四、日志轮转(必须配置)

Debian 默认使用 logrotate:

/etc/logrotate.d/nginx

查看:

cat /etc/logrotate.d/nginx

确保包含:

daily
missingok
rotate 14
compress
delaycompress
notifempty

手动测试:

sudo logrotate -d /etc/logrotate.d/nginx

五、异常监控与告警(生产推荐)

方案 1:fail2ban(防爆破 / 扫描)

sudo apt install fail2ban

示例(限制 404 爆破):

[nginx-botsearch]
enabled = true
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 10

方案 2:Prometheus + Grafana(专业监控)

组件:

  • nginx-exporter
  • node-exporter
  • Prometheus
  • Grafana

适合:

  • 多台服务器
  • 长期监控
  • 图形化告警

六、ELK / Loki(大规模日志)

  • ELK:Elasticsearch + Logstash + Kibana
  • Grafana Loki:轻量,适合容器和云原生

适合:

  • 日志量巨大
  • 需要全文检索
  • 多服务统一日志

七、简单自动化监控脚本(示例)

#!/bin/bash
COUNT=$(tail -n 100 /var/log/nginx/error.log | grep -c "crit")
if [ "$COUNT" -gt 5 ]; then
    echo "Nginx error spike!" | mail -s "Nginx Alert" admin@domain.com
fi

加 cron:

*/5 * * * * /opt/nginx-monitor.sh

总结建议

场景 推荐方案
个人 / 小站 tail + GoAccess
多站点 GoAccess + fail2ban
生产环境 Prometheus + Grafana
大规模 ELK / Loki

如果你愿意,我可以:

  • 帮你写一套 Nginx 日志监控脚本
  • 或按你的 Debian 版本 + Nginx 配置给具体方案

0 踩