监控 Nginx 错误日志(通常位于 /var/log/nginx/error.log)可以从实时查看、自动告警、集中收集、可视化几个层面来做。下面按“由浅入深”的方式说明。
tail -f /var/log/nginx/error.log
Nginx 错误日志级别:
debug < info < notice < warn < error < crit < alert < emerg
修改 nginx 配置:
error_log /var/log/nginx/error.log error;
只查看 error 以上:
tail -f /var/log/nginx/error.log | grep -E "error|crit|alert|emerg"
logrotate + 定时脚本(简单)定期扫描日志关键词并告警:
grep -E "error|timeout|refused" /var/log/nginx/error.log \
| mail -s "Nginx Error Alert" admin@example.com
可放入 crontab:
*/5 * * * * /scripts/check_nginx_error.sh
fail2ban(防攻击 + 日志监控)适合监控:
apt install fail2ban
示例 filter:
[nginx-error]
enabled = true
filter = nginx-error
logpath = /var/log/nginx/error.log
maxretry = 5
nginx → error.log → node_exporter / loki → prometheus → grafana
示例(Loki):
scrape_configs:
- job_name: nginx
static_configs:
- targets: [localhost]
labels:
job: nginx
__path__: /var/log/nginx/error.log
Grafana 中可写查询:
{job="nginx"} |= "error"
error_log /var/log/nginx/error.log warn;
error_log /var/log/nginx/error.log;
error_log /var/log/nginx/critical.log crit;
| 错误 | 含义 |
|---|---|
connect() failed |
后端服务异常 |
upstream timed out |
后端响应慢 |
no live upstreams |
负载均衡全部不可用 |
Permission denied |
文件/目录权限问题 |
Too many open files |
系统句柄不足 |
tail -f + 定时脚本如果你愿意,可以告诉我:
我可以直接给你一套可落地的配置方案。