From 6609a084ef0d8c1d90d8d67d6163186e4c38969f Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Wed, 24 Apr 2024 02:32:57 +0200 Subject: [PATCH 1/4] Add support for the Queue Module --- .../Laravel/Features/QueueIntegration.php | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/Sentry/Laravel/Features/QueueIntegration.php b/src/Sentry/Laravel/Features/QueueIntegration.php index 24074bf4..0d24a902 100644 --- a/src/Sentry/Laravel/Features/QueueIntegration.php +++ b/src/Sentry/Laravel/Features/QueueIntegration.php @@ -36,6 +36,7 @@ class QueueIntegration extends Feature private const QUEUE_PAYLOAD_BAGGAGE_DATA = 'sentry_baggage_data'; private const QUEUE_PAYLOAD_TRACE_PARENT_DATA = 'sentry_trace_parent_data'; + private const QUEUE_PAYLOAD_PUBLISH_TIME = 'sentry_publish_time'; public function isApplicable(): bool { @@ -78,6 +79,7 @@ public function onBoot(Dispatcher $events): void if ($payload !== null) { $payload[self::QUEUE_PAYLOAD_BAGGAGE_DATA] = getBaggage(); $payload[self::QUEUE_PAYLOAD_TRACE_PARENT_DATA] = getTraceparent(); + $payload[self::QUEUE_PAYLOAD_PUBLISH_TIME] = microtime(true); } return $payload; @@ -181,12 +183,25 @@ public function handleJobProcessingQueueEvent(JobProcessing $event): void $resolvedJobName = $event->job->resolveName(); + $receiveLatency = null; + if ($event->job->payload()[self::QUEUE_PAYLOAD_PUBLISH_TIME] !== null) { + $receiveLatency = microtime(true) - $event->job->payload()[self::QUEUE_PAYLOAD_PUBLISH_TIME]; + } + $job = [ 'job' => $event->job->getName(), - 'queue' => $event->job->getQueue(), 'resolved' => $resolvedJobName, - 'attempts' => $event->job->attempts(), - 'connection' => $event->connectionName, + + 'messaging.system' => 'laravel', + + 'messaging.destination.name' => $event->job->getQueue(), + 'messaging.destination.connection' => $event->connectionName, + + 'messaging.message.id' => $event->job->getJobId(), + 'messaging.message.envelope.size' => mb_strlen($event->job->getRawBody()), + 'messaging.message.body.size' => mb_strlen(json_encode($event->job->payload()['data'])), + 'messaging.message.retry.count' => $event->job->attempts(), + 'messaging.message.receive.latency' => $receiveLatency, ]; if ($context instanceof TransactionContext) { From cc9f79f3d958f8c68181a5089713de885eb60f30 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Thu, 23 May 2024 15:49:44 +0200 Subject: [PATCH 2/4] Cleanup --- src/Sentry/Laravel/Features/QueueIntegration.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Sentry/Laravel/Features/QueueIntegration.php b/src/Sentry/Laravel/Features/QueueIntegration.php index 0d24a902..738056ef 100644 --- a/src/Sentry/Laravel/Features/QueueIntegration.php +++ b/src/Sentry/Laravel/Features/QueueIntegration.php @@ -105,9 +105,6 @@ public function handleJobQueueingEvent(JobQueueing $event): void } $currentSpan - ->setData([ - 'messaging.laravel.job' => $jobName, - ]) ->setDescription($jobName); } @@ -189,9 +186,6 @@ public function handleJobProcessingQueueEvent(JobProcessing $event): void } $job = [ - 'job' => $event->job->getName(), - 'resolved' => $resolvedJobName, - 'messaging.system' => 'laravel', 'messaging.destination.name' => $event->job->getQueue(), From 3ad5159b873c72698212f9dc5ae9f39c75ce6d7a Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Mon, 27 May 2024 16:56:00 +0200 Subject: [PATCH 3/4] Cast `messaging.message.id` to string --- src/Sentry/Laravel/Features/QueueIntegration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Sentry/Laravel/Features/QueueIntegration.php b/src/Sentry/Laravel/Features/QueueIntegration.php index 738056ef..2b7784bc 100644 --- a/src/Sentry/Laravel/Features/QueueIntegration.php +++ b/src/Sentry/Laravel/Features/QueueIntegration.php @@ -191,7 +191,7 @@ public function handleJobProcessingQueueEvent(JobProcessing $event): void 'messaging.destination.name' => $event->job->getQueue(), 'messaging.destination.connection' => $event->connectionName, - 'messaging.message.id' => $event->job->getJobId(), + 'messaging.message.id' => (string) $event->job->getJobId(), 'messaging.message.envelope.size' => mb_strlen($event->job->getRawBody()), 'messaging.message.body.size' => mb_strlen(json_encode($event->job->payload()['data'])), 'messaging.message.retry.count' => $event->job->attempts(), From 0fe9910843029100d3799c8490547a28cc34f488 Mon Sep 17 00:00:00 2001 From: Michi Hoffmann Date: Tue, 4 Jun 2024 12:53:59 +0200 Subject: [PATCH 4/4] Update src/Sentry/Laravel/Features/QueueIntegration.php Co-authored-by: Alex Bouma --- src/Sentry/Laravel/Features/QueueIntegration.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Sentry/Laravel/Features/QueueIntegration.php b/src/Sentry/Laravel/Features/QueueIntegration.php index 2b7784bc..3cbe32b6 100644 --- a/src/Sentry/Laravel/Features/QueueIntegration.php +++ b/src/Sentry/Laravel/Features/QueueIntegration.php @@ -192,8 +192,8 @@ public function handleJobProcessingQueueEvent(JobProcessing $event): void 'messaging.destination.connection' => $event->connectionName, 'messaging.message.id' => (string) $event->job->getJobId(), - 'messaging.message.envelope.size' => mb_strlen($event->job->getRawBody()), - 'messaging.message.body.size' => mb_strlen(json_encode($event->job->payload()['data'])), + 'messaging.message.envelope.size' => strlen($event->job->getRawBody()), + 'messaging.message.body.size' => strlen(json_encode($event->job->payload()['data'])), 'messaging.message.retry.count' => $event->job->attempts(), 'messaging.message.receive.latency' => $receiveLatency, ];