阅读量:3
LNMP环境下日志管理方法
一 日志分类与定位
- 建议先梳理各组件的日志路径与作用,便于后续轮转、分析与告警配置。
| 组件 | 常见路径 | 主要用途 |
|---|---|---|
| Nginx | /var/log/nginx/access.log、/var/log/nginx/error.log | 访问记录、错误与诊断 |
| PHP-FPM | /var/log/php-fpm/(如:www-data-*.log 或 php-fpm.log) | FPM 进程与脚本错误 |
| MySQL/MariaDB | /var/log/mysql/error.log,以及(可选)slow.log、general.log | 错误、慢查询、通用查询 |
| 系统日志 | journalctl -u nginx/mysql | 服务启动、运行与崩溃信息 |
- 实时查看常用命令:tail -f、journalctl -u 服务名 -f。以上路径在不同发行版或安装方式下可能略有差异,请以实际环境为准。
二 日志轮转与保留策略
- 使用系统自带的 logrotate 做按日/按大小切割、压缩与过期清理,避免单日志无限膨胀。
- 通用原则:按日切割(daily)、保留7–30天(rotate 7/30)、启用压缩(compress)、空文件不轮转(notifempty)、缺失不报错(missingok)、按服务设置属主与权限(create)。
- 示例配置(/etc/logrotate.d/nginx):
/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0644 root adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 $(cat /var/run/nginx.pid)
fi
endscript
}
- 示例配置(/etc/logrotate.d/php-fpm):
/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/php-fpm/php-fpm.pid ]; then
kill -USR2 $(cat /var/run/php-fpm/php-fpm.pid)
fi
endscript
}
- 示例配置(/etc/logrotate.d/mysql):
/var/log/mysql/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 mysql adm
}
- 调试与执行:logrotate -d 配置文件(语法检查),logrotate -f 配置文件(强制执行)。Nginx 用 kill -USR1 重新打开日志文件,PHP-FPM 用 kill -USR2 安全重载,避免进程中断。
三 日志格式与采集优化
- Nginx 日志格式自定义(/etc/nginx/nginx.conf 的 http 块):
http {
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
}
- 性能与噪声控制:
- 对静态资源关闭访问日志,减少 I/O 与存储占用:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
expires 7d;
access_log off;
}
- 合理设置 PHP 错误日志级别 与路径(php.ini 或 www.conf 的 error_log),避免记录过多调试信息;必要时开启 异步/缓冲写入 降低应用性能影响。
四 分析与可视化
- 命令行快速检索:grep、awk、sed 对访问与错误日志做条件过滤、统计与报表生成。
- 实时可视化:使用 GoAccess 生成 HTML 访问报告,便于运营与安全分析:
goaccess -a -d -f /var/log/nginx/access.log \
--log-format '%h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^' \
--date-format %d/%b/%Y --time-format %T \
-o /var/www/html/goaccess.html
- 集中化平台:小规模可用 ELK Stack(Elasticsearch/Logstash/Kibana) 或 Graylog;资源更紧张时可用 Fluentd + Loki/Grafana 组合,统一采集、解析、存储与可视化。
五 监控告警与安全合规
- 服务与系统日志监控:使用 journalctl -u nginx/mysql -f 实时跟踪;结合 Logwatch、rsyslog 做常规汇总与转发;在 Prometheus + Grafana 中基于日志或指标设定阈值告警。
- 安全与合规要点:
- 严格限制日志文件权限(如 Nginx 0644 root adm、PHP-FPM 0640 www-data adm、MySQL 0640 mysql adm),仅授权人员可访问。
- 定期备份关键日志(如 tar/rsync 到离线或对象存储),并设置合理的保留周期与异地归档策略。
- 建立基线巡检:异常状态码比例、暴力访问特征、慢查询增长、磁盘占用阈值等,配合告警及时处置。
以上就是关于“LNMP环境下日志管理方法”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm