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环境的日志规范化管理,确保日志可用性、可维护性,同时避免日志文件对系统性能的影响。