diff --git a/src/sentry/src/Aspect/GuzzleHttpClientAspect.php b/src/sentry/src/Aspect/GuzzleHttpClientAspect.php index 8122b80d8..fc98c7174 100644 --- a/src/sentry/src/Aspect/GuzzleHttpClientAspect.php +++ b/src/sentry/src/Aspect/GuzzleHttpClientAspect.php @@ -81,8 +81,8 @@ public function process(ProceedingJoinPoint $proceedingJoinPoint) Integration::addBreadcrumb(new Breadcrumb( Breadcrumb::LEVEL_INFO, - Breadcrumb::TYPE_DEFAULT, - 'guzzle', + Breadcrumb::TYPE_HTTP, + 'http', $uri, $data )); diff --git a/src/sentry/src/Listener/EventHandleListener.php b/src/sentry/src/Listener/EventHandleListener.php index a5dd758b3..616c9a09c 100644 --- a/src/sentry/src/Listener/EventHandleListener.php +++ b/src/sentry/src/Listener/EventHandleListener.php @@ -20,12 +20,14 @@ use Hyperf\Contract\StdoutLoggerInterface; use Hyperf\Crontab\Event as CrontabEvent; use Hyperf\Database\Events as DbEvent; +use Hyperf\DbConnection\Pool\PoolFactory as DbPoolFactory; use Hyperf\Event\Contract\ListenerInterface; use Hyperf\Framework\Event\BootApplication; use Hyperf\HttpServer\Event as HttpEvent; use Hyperf\HttpServer\Server as HttpServer; use Hyperf\Kafka\Event as KafkaEvent; use Hyperf\Redis\Event as RedisEvent; +use Hyperf\Redis\Pool\PoolFactory as RedisPoolFactory; use Hyperf\RpcServer\Event as RpcEvent; use Hyperf\RpcServer\Server as RpcServer; use Hyperf\Server\Event; @@ -280,6 +282,17 @@ protected function handleDbQueryExecuted(object $event): void $data['bindings'] = $event->bindings; } + try { + $pool = $this->container->get(DbPoolFactory::class)->getPool($event->connectionName); + $data['pool'] = [ + 'max' => $pool->getOption()->getMaxConnections(), + 'waiting' => $pool->getConnectionsInChannel(), + 'use' => $pool->getCurrentConnections(), + ]; + } catch (Throwable $e) { + $this->captureException($e); + } + Integration::addBreadcrumb(new Breadcrumb( Breadcrumb::LEVEL_INFO, Breadcrumb::TYPE_DEFAULT, @@ -318,16 +331,30 @@ protected function handleRedisCommandExecuted(object $event): void return; } + $data = [ + 'connectionName' => $event->connectionName, + 'arguments' => $event->parameters, + 'result' => $event->result, + 'duration' => $event->time * 1000, + ]; + + try { + $pool = $this->container->get(RedisPoolFactory::class)->getPool($event->connectionName); + $data['pool'] = [ + 'max' => $pool->getOption()->getMaxConnections(), + 'waiting' => $pool->getConnectionsInChannel(), + 'use' => $pool->getCurrentConnections(), + ]; + } catch (Throwable $e) { + $this->captureException($e); + } + Integration::addBreadcrumb(new Breadcrumb( Breadcrumb::LEVEL_INFO, Breadcrumb::TYPE_DEFAULT, 'redis', $event->command, - [ - 'arguments' => $event->parameters, - 'result' => $event->result, - 'duration' => $event->time * 1000, - ] + $data )); }