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 | 服务启动、运行与崩溃信息 |
二 日志轮转与保留策略
/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
}
/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
}
/var/log/mysql/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 mysql adm
}
三 日志格式与采集优化
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;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {
expires 7d;
access_log off;
}
四 分析与可视化
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
五 监控告警与安全合规