温馨提示×

Ubuntu下如何监控PHP日志

小樊
36
2025-10-28 15:14:07
栏目: 编程语言

Ubuntu下监控PHP日志的常用方法

1. 使用tail命令实时查看日志

tail -f是Ubuntu下最常用的实时监控日志工具,适用于大多数PHP日志文件(如PHP-FPM、Apache、Nginx的错误日志)。

  • PHP-FPM日志:默认路径为/var/log/php-fpm.log(或/var/log/php7.x-fpm.logx为PHP版本号),命令:
    sudo tail -f /var/log/php-fpm.log
    
  • Apache错误日志(若PHP通过Apache运行):路径为/var/log/apache2/error.log,命令:
    sudo tail -f /var/log/apache2/error.log
    
  • Nginx错误日志(若PHP通过Nginx运行):路径为/var/log/nginx/error.log,命令:
    sudo tail -f /var/log/nginx/error.log
    
  • 停止监控:按Ctrl + C退出。

2. 编写PHP脚本监控日志变化

若需要自定义监控逻辑(如将日志输出到网页或发送通知),可以编写PHP脚本。以下是一个简单的示例:

<?php
$logFile = '/var/log/php-fpm.log'; // 替换为实际日志路径
$fileSize = filesize($logFile);
while (true) {
    clearstatcache(); // 清除文件状态缓存
    $currentSize = filesize($logFile);
    if ($currentSize > $fileSize) {
        $handle = fopen($logFile, 'r');
        fseek($handle, $fileSize); // 定位到上次读取位置之后
        $content = fread($handle, $currentSize - $fileSize); // 读取新增内容
        fclose($handle);
        echo $content; // 输出到终端(可修改为写入文件或发送邮件)
        $fileSize = $currentSize;
    }
    sleep(1); // 每秒检查一次,避免CPU占用过高
}
?>
  • 运行脚本:将代码保存为log_monitor.php,通过PHP运行:
    php log_monitor.php
    
  • 注意:需确保PHP脚本有读取日志文件的权限(可使用sudo运行)。

3. 使用multitail工具监控多个日志

若需要同时监控多个日志文件(如PHP-FPM错误日志和访问日志),可以使用multitail工具,支持分屏显示。

  • 安装multitail
    sudo apt install multitail
    
  • 监控多个日志
    sudo multitail /var/log/php-fpm.log /var/log/php-fpm.access.log
    
  • 常用选项-s 2表示分两屏显示,-c表示彩色高亮。

4. 使用日志管理工具(生产环境推荐)

对于生产环境,建议使用专业日志管理工具,实现日志的集中存储、搜索和分析:

  • Logrotate:管理日志轮换(压缩、删除旧日志),防止日志文件过大。配置文件位于/etc/logrotate.d/,可修改php-fpm相关配置(如/etc/logrotate.d/php7.x-fpm)。
  • Rsyslog:强大的日志处理工具,支持过滤、转发日志到远程服务器。配置文件位于/etc/rsyslog.conf
  • Elastic Stack(ELK):包含Elasticsearch(存储)、Logstash(收集/解析)、Kibana(可视化),适合大规模日志分析。需安装并配置各组件,将PHP日志导入Elasticsearch后,通过Kibana查看。

5. 检查日志文件位置

若无法找到PHP日志,需确认日志路径是否正确:

  • 默认路径:PHP-FPM日志通常在/var/log/php-fpm.log,Apache/Nginx错误日志分别在/var/log/apache2/error.log/var/log/nginx/error.log
  • 自定义路径:检查php.ini文件(路径为/etc/php/{version}/cli/php.ini/etc/php/{version}/fpm/php.ini),查找error_log指令:
    error_log = /var/log/php_errors.log
    
    error_log设置为自定义路径,则需监控该文件。

注意事项

  • 权限问题:日志文件通常属于root用户,需使用sudo提升权限查看。
  • 实时性tail -f和PHP脚本均为实时监控,适合快速排查问题;日志管理工具适合长期存储和分析。
  • 敏感信息:监控日志时需注意保护敏感数据(如用户密码、API密钥),避免泄露。

0