Debian LNMP日志管理指南
Debian系统下LNMP(Linux+Nginx+MySQL/MariaDB+PHP)环境的日志管理,需覆盖日志定位、查看、轮转、分析及优化等环节,确保日志有序存储、便于排查问题且不占用过多磁盘空间。
LNMP各组件的默认日志路径如下(需根据实际配置调整):
/var/log/nginx/access.log
(记录用户请求)、错误日志/var/log/nginx/error.log
(记录Nginx运行错误);/var/log/mysql/error.log
(记录数据库启动、运行错误)、慢查询日志/var/log/mysql/mysql-slow.log
(记录执行时间超过阈值的查询)、通用查询日志/var/log/mysql/mysql-general.log
(记录所有SQL语句,生产环境建议关闭);/var/log/php-fpm/error.log
(记录PHP进程错误)、访问日志/var/log/php-fpm/www-access.log
(记录PHP请求,需手动开启)。tail -f
命令跟踪日志文件的最新内容,例如:tail -f /var/log/nginx/access.log # 实时查看Nginx访问日志
tail -f /var/log/php-fpm/error.log # 实时查看PHP-FPM错误日志
grep
命令筛选特定信息,例如查找Nginx中的404错误:grep "404" /var/log/nginx/access.log
less
命令分页浏览大日志文件,支持上下翻页和搜索:less /var/log/mysql/error.log
```。
使用logrotate
工具(Debian默认安装)自动轮转、压缩、删除旧日志,防止日志文件占满磁盘。
/etc/logrotate.d/nginx
,添加以下规则(每天轮转、保留30天、压缩旧日志):/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
/etc/logrotate.d/mysql
,设置二进制日志(binlog)和慢查询日志的轮转规则:/var/log/mysql/mysql-bin.* {
daily
missingok
rotate 7
compress
delaycompress
sharedscripts
postrotate
/usr/bin/mysqladmin flush-logs
endscript
}
/var/log/mysql/mysql-slow.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
}
/etc/logrotate.d/php-fpm
,配置错误日志和访问日志的轮转:/var/log/php-fpm/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/php-fpm/php-fpm.pid ] && kill -USR2 `cat /var/run/php-fpm/php-fpm.pid`
endscript
}
配置完成后,logrotate
会每天自动运行(通过cron
任务),无需手动干预。
grep
、awk
、sed
等命令提取关键信息,例如统计Nginx每日请求数:awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
GoAccess
(实时分析Nginx日志)、ELK Stack
(Elasticsearch+Logstash+Kibana,适合大规模日志分析)或Graylog
(开源日志管理平台),将日志转化为图表,便于监控访问趋势、错误分布等。error_log
级别可设置为warn
(仅记录警告及以上错误),PHP的error_log
级别可设置为notice
(忽略调试信息);general_log=OFF
);find
命令删除30天前的旧日志,例如:find /var/log/nginx -type f -name "*.log.*.gz" -mtime +30 -exec rm {} \;
set
指令或proxy_hide_header
配置,隐藏日志中的用户隐私信息(如手机号、身份证号)。通过以上步骤,可实现Debian LNMP环境的日志规范化管理,确保日志可用性、可维护性,同时避免日志文件对系统性能的影响。