温馨提示×

ubuntu上thinkphp项目的监控方案

小樊
52
2025-10-14 07:19:28
栏目: 编程语言

Ubuntu上ThinkPHP项目的监控方案

一、进程与文件变更监控:Supervisor

Supervisor是一款进程管理工具,可用于监控ThinkPHP项目的运行状态,并在文件变更时自动重启服务(适用于开发环境热更新)。

  • 安装Supervisor:通过终端运行sudo apt-get update && sudo apt-get install supervisor完成安装。
  • 配置监控:创建配置文件/etc/supervisor/conf.d/thinkphp.conf,内容如下(需替换项目路径和用户):
    [program:thinkphp]
    process_name=%(program_name)s_%(process_num)02d
    command=php /path/to/your/thinkphp/project start
    autostart=true
    autorestart=true
    user=your_ubuntu_user
    numprocs=1
    redirect_stderr=true
    stdout_logfile=/path/to/your/thinkphp/project/runtime/log/supervisor.log
    stopwaitsecs=3600
    
  • 激活配置:运行sudo supervisorctl reread && sudo supervisorctl update使配置生效,随后通过sudo supervisorctl start thinkphp:*启动监控。

二、性能与错误综合监控:日志+自定义中间件

ThinkPHP内置日志功能与中间件机制,可实现基础的请求耗时、内存使用及错误记录。

  • 日志配置:在application/config.php中设置日志参数,指定日志类型(文件)、存储路径及级别:
    'log' => [
        'type' => 'file',
        'var_log_path' => './runtime/log',
        'level' => ['info', 'debug', 'warn', 'error'],
    ],
    
  • 自定义性能中间件:创建app/middleware/PerformanceMiddleware.php,记录请求开始与结束时间,计算耗时并写入日志:
    namespace app\middleware;
    use think\facade\Log;
    use think\middleware\BaseMiddleware;
    class PerformanceMiddleware extends BaseMiddleware {
        public function handle($request, \Closure $next) {
            $start = microtime(true);
            $response = $next($request);
            $cost = microtime(true) - $start;
            Log::info("请求耗时: {$cost}秒");
            return $response;
        }
    }
    
  • 注册中间件:在application/middleware.php中添加自定义中间件:
    return ['app\middleware\PerformanceMiddleware'];
    
  • 错误监控:在application/config.php中开启错误日志与详细格式:
    'error_reporting' => E_ALL,
    'error_log' => './runtime/error.log',
    'exception_format' => 'json',
    
    通过try-catch捕获异常并记录详细信息:
    try {
        // 业务逻辑
    } catch (\Exception $e) {
        \think\facade\Log::error("捕获异常: " . $e->getMessage());
        return json(['status' => 500, 'msg' => '服务器内部错误']);
    }
    

三、专业APM监控:第三方工具集成

1. Datadog

Datadog提供应用性能管理(APM)与基础设施监控,支持ThinkPHP应用的深度性能分析。

  • 集成步骤
    • 安装Datadog PHP库:composer require datadog/php-datadogstatsd
    • 配置参数:创建config/datadog.php,设置Agent地址、端口、应用名称及标签:
      return [
          'host' => 'localhost',
          'port' => 8125,
          'namespace' => 'thinkphp_app',
          'tags' => ['env:production'],
      ];
      
    • 注册服务提供者:在provider.php中绑定Datadog实例:
      namespace app;
      use think\Service;
      use DataDog\DogStatsd;
      class DatadogService extends Service {
          public function register() {
              $this->app->bind('datadog', function() {
                  $config = config('datadog');
                  return new DogStatsd($config);
              });
          }
      }
      
    • 记录指标:在控制器中使用app('datadog')记录执行时间(如index方法耗时):
      public function index() {
          $datadog = app('datadog');
          $start = microtime(true);
          // 业务逻辑
          $elapsed = microtime(true) - $start;
          $datadog->timing('thinkphp.index_execution_time', $elapsed);
          return 'Hello, ThinkPHP!';
      }
      

2. Prometheus + Grafana

通过Prometheus采集指标,Grafana实现可视化监控,适合大规模分布式系统。

  • 部署流程
    • 安装Prometheus:在Ubuntu上下载Prometheus二进制文件并配置prometheus.yml,添加ThinkPHP应用的抓取目标(需ThinkPHP暴露/metrics接口)。
    • 暴露指标:在ThinkPHP中通过中间件或库(如think-prometheus)生成并暴露Prometheus格式的指标(如请求总数、错误数、响应时间)。
    • 配置Grafana:添加Prometheus为数据源,在Grafana中创建仪表盘,展示CPU使用率、内存占用、请求延迟等指标。

四、基础系统资源监控:命令行与图形化工具

1. 命令行工具

  • top/htop:实时查看系统进程的CPU、内存占用(top为默认工具,htop需通过sudo apt-get install htop安装,界面更友好)。
  • ps:查看指定PHP进程的资源使用情况(如ps aux | grep php)。
  • vmstat/iostat/sar:监控系统整体资源(如vmstat 1查看内存、CPU、IO状态,iostat -x 1查看磁盘IO,sar -u 1查看CPU利用率)。

2. 图形化工具

  • Glances:跨平台系统监控工具,支持Ubuntu终端与Web界面,可查看CPU、内存、磁盘、网络等实时数据(安装:sudo apt-get install glances,运行:glances)。
  • System Monitor:Ubuntu自带图形化工具,通过“系统→系统监视器”访问,直观展示系统资源使用情况及进程管理。

0