ubuntu上thinkphp项目的监控方案
导读:Ubuntu上ThinkPHP项目的监控方案 一、进程与文件变更监控:Supervisor Supervisor是一款进程管理工具,可用于监控ThinkPHP项目的运行状态,并在文件变更时自动重启服务(适用于开发环境热更新)。 安装Sup...
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!'; }
- 安装Datadog PHP库:
2. Prometheus + Grafana
通过Prometheus采集指标,Grafana实现可视化监控,适合大规模分布式系统。
- 部署流程:
- 安装Prometheus:在Ubuntu上下载Prometheus二进制文件并配置
prometheus.yml
,添加ThinkPHP应用的抓取目标(需ThinkPHP暴露/metrics接口)。 - 暴露指标:在ThinkPHP中通过中间件或库(如
think-prometheus
)生成并暴露Prometheus格式的指标(如请求总数、错误数、响应时间)。 - 配置Grafana:添加Prometheus为数据源,在Grafana中创建仪表盘,展示CPU使用率、内存占用、请求延迟等指标。
- 安装Prometheus:在Ubuntu上下载Prometheus二进制文件并配置
四、基础系统资源监控:命令行与图形化工具
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自带图形化工具,通过“系统→系统监视器”访问,直观展示系统资源使用情况及进程管理。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu上thinkphp项目的监控方案
本文地址: https://pptw.com/jishu/725498.html