Ubuntu上ThinkPHP项目的监控方案
Supervisor是一款进程管理工具,可用于监控ThinkPHP项目的运行状态,并在文件变更时自动重启服务(适用于开发环境热更新)。
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' => '服务器内部错误']);
}
Datadog提供应用性能管理(APM)与基础设施监控,支持ThinkPHP应用的深度性能分析。
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!';
}
通过Prometheus采集指标,Grafana实现可视化监控,适合大规模分布式系统。
prometheus.yml,添加ThinkPHP应用的抓取目标(需ThinkPHP暴露/metrics接口)。think-prometheus)生成并暴露Prometheus格式的指标(如请求总数、错误数、响应时间)。top为默认工具,htop需通过sudo apt-get install htop安装,界面更友好)。ps aux | grep php)。vmstat 1查看内存、CPU、IO状态,iostat -x 1查看磁盘IO,sar -u 1查看CPU利用率)。sudo apt-get install glances,运行:glances)。