Linux环境下 ThinkPHP 监控实践
一 进程守护与自动重启
yum install -y supervisorsupervisord -vsystemctl enable --now supervisord/etc/supervisord.d-queue.ini[program:think-queue]
command=/usr/bin/php /data/www queue:listen
directory=/data/www/your-project
process_name=%(process_num)02d
numprocs=2
autostart=true
autorestart=true
startsecs=5
startretries=5
redirect_stderr=true
stdout_logfile=/var/log-queue.out.log
stderr_logfile=/var/log-queue.err.log
user=www-data
supervisorctl start think-queue,supervisorctl update(热更新配置)supervisorctl status,supervisorctl restart think-queue二 应用性能与业务指标监控
composer require datadog/php-datadogstatsdconfig/datadog.php(设置 agent 地址、端口、命名空间与标签)use DataDog\DogStatsd;
$statsd = new DogStatsd(['host'=>'127.0.0.1','port'=>8125,'namespace'=>'tp_app']);
$start = microtime(true);
// ...业务逻辑...
$statsd->timing('tp.request.duration', (microtime(true)-$start)*1000, ['route'=>'/index']);
$statsd->increment('tp.job.processed', 1, ['queue'=>'default']);
三 系统资源与健康监控
四 ThinkPHP 内置能力与开发调试
namespace app\middleware;
use think\facade\Request;
use think\facade\Log;
class PerformanceLogger {
public function handle($request, \Closure $next) {
$start = microtime(true);
$response = $next($request);
$duration = (microtime(true) - $start) * 1000; // ms
Log::info("Request to ".Request::url()." took ".round($duration,2)."ms");
return $response;
}
}