温馨提示×

LNMP架构中如何进行日志管理

小樊
41
2025-11-30 07:02:43
栏目: 编程语言

LNMP架构日志管理实操指南

一 核心思路与目录

  • 明确需要管理的日志类型:Nginx(访问与错误)、PHP-FPM(错误与慢日志)、MySQL/MariaDB(错误、慢查询、通用查询)、系统日志(内核、服务启动与运行)。
  • 统一存放与权限:将日志集中到**/var/log/下的组件子目录,设置最小权限(如0640 www-data adm0640 mysql adm**),便于审计与合规。
  • 建立标准化流程:日志采集与查看 → 轮转与压缩 → 分析与告警 → 备份与归档 → 安全与合规。

二 各组件日志位置与查看

  • Nginx
    • 路径:/var/log/nginx/access.log/var/log/nginx/error.log
    • 实时查看:tail -f /var/log/nginx/access.logtail -f /var/log/nginx/error.log
    • systemd 查看:journalctl -u nginx -f
  • PHP-FPM
    • 路径:常见为**/var/log/php-fpm/**(如 www-data-*.logphp-fpm.log
    • 实时查看:tail -f /var/log/php-fpm/www-data-*.logtail -f /var/log/php-fpm.log
    • systemd 查看:journalctl -u php*-fpm -f
  • MySQL/MariaDB
    • 路径:常见为**/var/log/mysql/error.log**、/var/log/mysql/slow.log/var/log/mysql/general.log
    • 实时查看:tail -f /var/log/mysql/error.log
    • systemd 查看:journalctl -u mysql -f
  • 系统日志
    • 使用 journalctl 统一查看服务与内核日志,便于跨组件排障。

三 日志轮转与保留策略

  • 使用 logrotate 为各组件配置按日/周轮转、压缩与保留,示例要点如下:
组件 配置路径 关键策略 轮转后动作
Nginx /etc/logrotate.d/nginx daily、rotate 7、compress、missingok、notifempty、create 0640 www-data adm 无需重启,自动继续写入新文件
MySQL /etc/logrotate.d/mysql daily、rotate 7、compress、missingok、notifempty、create 0640 mysql adm 建议 postrotate 执行 systemctl reload mysql 以确保日志句柄刷新
PHP-FPM /etc/logrotate.d/php-fpm daily、rotate 7、compress、missingok、notifempty、create 0640 www-data adm postrotate 执行 kill -USR2 $(cat /var/run/php-fpm.pid)systemctl reload php*-fpm 触发重新打开日志文件
  • 通用测试与启用
    • 语法校验:logrotate -d /etc/logrotate.d/nginx
    • 强制执行:logrotate -f /etc/logrotate.d/nginx
    • 大多数发行版已默认启用 logrotate 定时任务(cron 每日执行)。

四 日志分析与可视化

  • 命令行快速分析
    • 关键字检索:grep " 500 " /var/log/nginx/access.log
    • 状态码统计:awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
    • 慢查询定位:mysqldumpslow -s c /var/log/mysql/slow.log
  • 可视化与报表
    • GoAccess:实时解析 Nginx 访问日志,生成 HTML 报表,适合运营与性能分析
    • ELK Stack(Elasticsearch + Logstash + Kibana):集中采集、解析与可视化多源日志
    • Graylog:企业级日志平台,支持多输入、管道处理与告警
    • Fluentd:统一日志采集器,支持多后端输出(ES、Graylog 等)

五 监控告警与安全合规

  • 实时监控与告警
    • 系统监控:Prometheus + Grafana 采集指标,结合日志关键字或异常指标触发告警
    • 日志摘要:Logwatch 生成日报/周报,便于例行巡检
  • 安全与合规
    • 权限最小化:日志文件仅对必要用户与组可读(如 0640 www-data adm / 0640 mysql adm
    • 集中与脱敏:通过 rsyslog/Fluentd/Filebeat 将日志集中到受控平台,敏感字段脱敏后再入库
    • 备份与归档:对历史日志进行压缩归档异地备份,满足审计与合规要求
    • 日志级别控制:生产环境避免开启过于冗余的调试日志,减少性能与存储压力

0