温馨提示×

ubuntu lamp如何管理日志

小樊
42
2025-12-14 06:49:22
栏目: 智能运维

Ubuntu LAMP 日志管理实操指南

一 日志位置与快速查看

  • 系统与服务日志
    • 系统日志:/var/log/syslog
    • 认证与安全:/var/log/auth.log
    • Apache 访问与错误:/var/log/apache2/access.log/var/log/apache2/error.log
    • MySQL 常见日志:/var/log/mysql/error.log;查询日志与慢查询日志路径取决于配置(常见为 /var/log/mysql//var/lib/mysql/
    • PHP:若使用 PHP-FPM,常见为 /var/log/php7.x-fpm.log(按实际版本号)
  • 常用查看与过滤
    • 实时查看:tail -f /var/log/apache2/error.log
    • 关键字过滤:grep ‘error’ /var/log/syslog
    • 按服务查看(systemd):journalctl -u apache2journalctl -u mysql
    • 分页浏览:less /var/log/syslog
      以上路径与命令适用于 Ubuntu LAMP 的常规部署与排障场景。

二 Apache 日志管理与优化

  • 日志路径与格式
    • 默认日志目录由 APACHE_LOG_DIR 指定(通常为 /var/log/apache2),可在 /etc/apache2/envvars 查看;主配置 /etc/apache2/apache2.conf 中使用 ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined 输出访问与错误日志;虚拟主机中可单独定义日志。
  • 日志级别
    • 通过 LogLevel 调整记录详细程度(如:warnerrordebug),生产常用 warn,排障可临时提升。
  • 日志轮转 Logrotate
    • Ubuntu 默认通过 /etc/logrotate.d/apache2 管理 Apache 日志轮转,可按天轮转、压缩、保留历史:
      /var/log/apache2/*.log {
          daily
          missingok
          rotate 52
          compress
          delaycompress
          notifempty
          create 0644 root adm
          sharedscripts
          postrotate
              systemctl reload apache2 > /dev/null
          endscript
      }
      
  • 性能与优化提示
    • 减少不必要的字段可降低 I/O(自定义 LogFormat)。
    • 高并发可考虑启用异步日志模块(如 mod_log_async,视版本与模块可用性而定)。

三 MySQL 日志管理与优化

  • 主要日志与作用
    • 错误日志:记录启动、运行、停止中的错误与告警(排障首选)。
    • 查询日志(General Query Log):记录所有 SQL,便于审计与问题追踪(性能敏感,谨慎开启)。
    • 慢查询日志(Slow Query Log):定位性能瓶颈,建议长期开启并合理设置阈值。
    • 二进制日志(Binary Log):用于复制与时间点恢复,空间占用需重点管理。
  • 配置与路径示例
    • 编辑 /etc/mysql/mysql.conf.d/mysqld.cnf(或 /etc/my.cnf)的 [mysqld] 段:
      log_error = /var/log/mysql/error.log
      general_log = OFF
      slow_query_log = ON
      slow_query_log_file = /var/log/mysql/slow.log
      long_query_time = 2
      log_bin = /var/log/mysql/mysql-bin
      binlog_format = ROW
      expire_logs_days = 7
      max_binlog_size = 100M
      
    • 修改后重启:sudo systemctl restart mysql
    • 查看与归档
      • 实时查看:tail -f /var/log/mysql/error.log
      • 二进制日志归档:mysqlbinlog /var/log/mysql/mysql-bin.000001 > /path/to/archive.sql
  • 空间与清理要点
    • 避免长期开启 general_logslow_query_log 建议常开并配合合理阈值。
    • 通过 expire_logs_daysmax_binlog_size 控制 binlog 增长;必要时使用 mysqlbinlog 归档后清理。

四 PHP 日志管理与优化

  • 错误日志配置
    • php.ini 设置 error_log 指定日志文件路径;确保运行用户(如 www-data)对日志目录具备写权限。
  • 应用内日志
    • 使用 error_log() 写入;大型项目建议使用 Monolog 等库进行多目标输出(文件、syslog、远程)。
  • 轮转与清理
    • 为 PHP 应用日志单独配置 logrotate(示例):
      /var/log/php_errors.log {
          daily
          missingok
          rotate 7
          compress
          delaycompress
          notifempty
          create 640 www-data adm
      }
      
  • 降低日志噪声
    • 调整 error_reporting(如生产环境去除 E_NOTICE/E_DEPRECATION),避免框架/应用产生过量调试日志。

五 集中化与自动化实践

  • 系统与服务日志
    • 使用 journalctl 做按服务、按时间段的查询与归档;结合 logrotate 做按大小/周期的本地轮转与压缩。
  • 集中式日志平台
    • 小规模可用 Logwatch/Logcheck 做日报摘要;中大型建议引入 ELK Stack(Elasticsearch、Logstash、Kibana)Graylog 做集中采集、检索、可视化与告警。
  • 安全与容量
    • 设置日志文件与目录权限,防止未授权访问;监控 /var/log 容量,建立清理与告警策略,避免磁盘被日志写满导致服务异常。

0