一、配置Nginx日志:精准记录是监控的基础
要监控Nginx日志防止宕机,首先需要确保日志格式规范、内容完整,便于后续分析异常。需配置两类核心日志:
$request_time
响应时间、$upstream_response_time
上游响应时间、$status
状态码等字段),便于后续筛选关键指标。warn
或error
(避免debug
级别导致日志量过大),仅在排查问题时临时调整为info
。二、日志轮转与存储:防止日志膨胀影响系统稳定性
当日志文件过大时,会占用大量磁盘空间,甚至导致系统无法写入日志或崩溃。需通过日志轮转定期压缩、归档旧日志:
logrotate
工具(Linux系统自带),配置/etc/logrotate.d/nginx
文件,设置每日轮转(daily
)、保留14天日志(rotate 14
)、压缩旧日志(compress
)、创建新日志文件(create 0644 nginx adm
),并在轮转后通知Nginx重新打开日志文件(postrotate
脚本中发送kill -USR1
信号)。三、实时监控日志:快速发现异常请求
通过实时监控日志,可及时发现高频错误、恶意请求、流量突增等异常,避免问题扩大导致宕机:
tail -F /var/log/nginx/access.log
实时查看访问日志的最新记录;用grep " 500 " /var/log/nginx/access.log
筛选500内部错误;用journalctl -u nginx -f
(systemd系统)实时查看Nginx服务的系统日志。GoAccess
(实时解析日志并生成HTML报告,支持访问量、状态码、请求时间等统计);或ELK Stack
(Elasticsearch存储日志、Logstash解析日志、Kibana可视化,适合大规模日志分析);或Grafana+Loki
(轻量级日志聚合,支持实时查询和 dashboard 展示)。四、关键指标监控与告警:提前预警宕机风险
除了日志内容,还需监控Nginx的运行状态指标,通过阈值设置提前预警宕机风险:
active connections
(总连接数)、reading
(读取中连接)、writing
(写入中连接)、waiting
(等待中连接),若active connections
接近worker_connections
(Nginx工作进程的最大连接数),说明服务器负载过高。5xx
错误(服务器内部错误)、4xx
错误(客户端错误)的比例,若5xx错误率突然升高(如超过1%),说明后端服务可能出现问题。Nginx Amplify
(Nginx官方工具,支持自动预警,如QPS低于100、500错误超过10次/分钟时发送邮件);Prometheus+Nginx Exporter+Grafana
(Nginx Exporter采集Nginx指标,Prometheus存储指标,Grafana设置告警规则,如“5xx错误率>5%”时触发邮件/Slack告警)。五、日志分析与优化:从根源上预防宕机
定期分析日志,识别高频错误、性能瓶颈、恶意攻击,采取针对性措施:
404 Not Found
(检查请求路径是否存在)、502 Bad Gateway
(检查后端服务是否存活)、503 Service Unavailable
(检查Nginx worker进程是否足够)等错误,修复配置或后端服务问题。$request_time
>2秒),找出耗时高的请求路径(如/api/bigdata
),优化后端接口或增加缓存(如Redis)。POST /login
尝试、扫描/admin
路径),配置limit_req_zone
(限制请求速率)、deny
(IP黑名单)等规则,防止DDoS攻击。