From e2291c529a39ccffa64cb91d8afb23a9105678d9 Mon Sep 17 00:00:00 2001 From: Brett McBride Date: Wed, 14 May 2025 10:19:47 +1000 Subject: [PATCH] update instrumentations to semconv 1.32 (#369) SemConv 1.32 deprecates a couple of attributes which we use extensively: - code.function.name is now an FQN (including class name) - code.namespace is deprecated (included in code.function.name) - code.linenumber is deprecated and replaced with code.line.number Updated all packages to conform, updated min semconv to 1.32, and made a couple of minor changes" --- composer.json | 2 +- src/Hooks/Illuminate/Console/Command.php | 5 ++- .../Illuminate/Contracts/Console/Kernel.php | 5 ++- .../Illuminate/Contracts/Http/Kernel.php | 5 ++- .../Illuminate/Contracts/Queue/Queue.php | 10 +++--- .../Illuminate/Database/Eloquent/Model.php | 35 ++++++++----------- src/Hooks/Illuminate/Queue/SyncQueue.php | 5 ++- src/LaravelInstrumentation.php | 2 +- 8 files changed, 28 insertions(+), 41 deletions(-) diff --git a/composer.json b/composer.json index dad8597..f5a188a 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ "ext-opentelemetry": "*", "laravel/framework": "^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0", "open-telemetry/api": "^1.0", - "open-telemetry/sem-conv": "^1.30" + "open-telemetry/sem-conv": "^1.32" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.50", diff --git a/src/Hooks/Illuminate/Console/Command.php b/src/Hooks/Illuminate/Console/Command.php index 48b23d5..2b2bbc8 100644 --- a/src/Hooks/Illuminate/Console/Command.php +++ b/src/Hooks/Illuminate/Console/Command.php @@ -35,9 +35,8 @@ protected function hookExecute(): bool $builder = $this->instrumentation ->tracer() ->spanBuilder(sprintf('Command %s', $command->getName() ?: 'unknown')) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno); $parent = Context::getCurrent(); diff --git a/src/Hooks/Illuminate/Contracts/Console/Kernel.php b/src/Hooks/Illuminate/Contracts/Console/Kernel.php index 8afa294..2a1c9e2 100644 --- a/src/Hooks/Illuminate/Contracts/Console/Kernel.php +++ b/src/Hooks/Illuminate/Contracts/Console/Kernel.php @@ -44,9 +44,8 @@ private function hookHandle(): bool ->tracer() ->spanBuilder('Artisan handler') ->setSpanKind(SpanKind::KIND_PRODUCER) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno); $parent = Context::getCurrent(); diff --git a/src/Hooks/Illuminate/Contracts/Http/Kernel.php b/src/Hooks/Illuminate/Contracts/Http/Kernel.php index b0c0eb9..bd564a9 100644 --- a/src/Hooks/Illuminate/Contracts/Http/Kernel.php +++ b/src/Hooks/Illuminate/Contracts/Http/Kernel.php @@ -46,9 +46,8 @@ protected function hookHandle(): bool ->tracer() ->spanBuilder(sprintf('%s', $request?->method() ?? 'unknown')) ->setSpanKind(SpanKind::KIND_SERVER) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno); $parent = Context::getCurrent(); if ($request) { diff --git a/src/Hooks/Illuminate/Contracts/Queue/Queue.php b/src/Hooks/Illuminate/Contracts/Queue/Queue.php index 96ec455..403cab6 100644 --- a/src/Hooks/Illuminate/Contracts/Queue/Queue.php +++ b/src/Hooks/Illuminate/Contracts/Queue/Queue.php @@ -39,9 +39,8 @@ protected function hookBulk(): bool 'bulk', pre: function (QueueContract $queue, array $params, string $class, string $function, ?string $filename, ?int $lineno) { $attributes = array_merge([ - TraceAttributes::CODE_FUNCTION_NAME => $function, - TraceAttributes::CODE_NAMESPACE => $class, - TraceAttributes::CODE_FILEPATH => $filename, + TraceAttributes::CODE_FUNCTION_NAME => sprintf('%s::%s', $class, $function), + TraceAttributes::CODE_FILE_PATH => $filename, TraceAttributes::CODE_LINE_NUMBER => $lineno, TraceAttributes::MESSAGING_BATCH_MESSAGE_COUNT => count($params[0] ?? []), ], $this->contextualMessageSystemAttributes($queue, [])); @@ -83,9 +82,8 @@ protected function hookLater(): bool }; $attributes = [ - TraceAttributes::CODE_FUNCTION_NAME => $function, - TraceAttributes::CODE_NAMESPACE => $class, - TraceAttributes::CODE_FILEPATH => $filename, + TraceAttributes::CODE_FUNCTION_NAME => sprintf('%s::%s', $class, $function), + TraceAttributes::CODE_FILE_PATH => $filename, TraceAttributes::CODE_LINE_NUMBER => $lineno, 'messaging.message.delivery_timestamp' => $estimateDeliveryTimestamp, ]; diff --git a/src/Hooks/Illuminate/Database/Eloquent/Model.php b/src/Hooks/Illuminate/Database/Eloquent/Model.php index 70de1bf..610cdb8 100644 --- a/src/Hooks/Illuminate/Database/Eloquent/Model.php +++ b/src/Hooks/Illuminate/Database/Eloquent/Model.php @@ -42,9 +42,8 @@ private function hookFind(): void ->tracer() ->spanBuilder($model::class . '::find') ->setSpanKind(SpanKind::KIND_INTERNAL) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno) ->setAttribute('laravel.eloquent.model', $model::class) ->setAttribute('laravel.eloquent.table', $model->getTable()) @@ -73,9 +72,8 @@ private function hookPerformUpdate(): void ->tracer() ->spanBuilder($model::class . '::update') ->setSpanKind(SpanKind::KIND_INTERNAL) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno) ->setAttribute('laravel.eloquent.model', $model::class) ->setAttribute('laravel.eloquent.table', $model->getTable()) @@ -104,9 +102,8 @@ private function hookPerformInsert(): void ->tracer() ->spanBuilder($model::class . '::create') ->setSpanKind(SpanKind::KIND_INTERNAL) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno) ->setAttribute('laravel.eloquent.model', $model::class) ->setAttribute('laravel.eloquent.table', $model->getTable()) @@ -135,9 +132,8 @@ private function hookDelete(): void ->tracer() ->spanBuilder($model::class . '::delete') ->setSpanKind(SpanKind::KIND_INTERNAL) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno) ->setAttribute('laravel.eloquent.model', $model::class) ->setAttribute('laravel.eloquent.table', $model->getTable()) @@ -167,9 +163,8 @@ private function hookGetModels(): void ->tracer() ->spanBuilder($model::class . '::get') ->setSpanKind(SpanKind::KIND_INTERNAL) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno) ->setAttribute('laravel.eloquent.model', $model::class) ->setAttribute('laravel.eloquent.table', $model->getTable()) @@ -199,9 +194,8 @@ private function hookDestroy(): void ->tracer() ->spanBuilder($model::class . '::destroy') ->setSpanKind(SpanKind::KIND_INTERNAL) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno) ->setAttribute('laravel.eloquent.model', $model::class) ->setAttribute('laravel.eloquent.table', $model->getTable()) @@ -230,9 +224,8 @@ private function hookRefresh(): void ->tracer() ->spanBuilder($model::class . '::refresh') ->setSpanKind(SpanKind::KIND_INTERNAL) - ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, $function) - ->setAttribute(TraceAttributes::CODE_NAMESPACE, $class) - ->setAttribute(TraceAttributes::CODE_FILEPATH, $filename) + ->setAttribute(TraceAttributes::CODE_FUNCTION_NAME, sprintf('%s::%s', $class, $function)) + ->setAttribute(TraceAttributes::CODE_FILE_PATH, $filename) ->setAttribute(TraceAttributes::CODE_LINE_NUMBER, $lineno) ->setAttribute('laravel.eloquent.model', $model::class) ->setAttribute('laravel.eloquent.table', $model->getTable()) diff --git a/src/Hooks/Illuminate/Queue/SyncQueue.php b/src/Hooks/Illuminate/Queue/SyncQueue.php index 2845f25..2934b27 100644 --- a/src/Hooks/Illuminate/Queue/SyncQueue.php +++ b/src/Hooks/Illuminate/Queue/SyncQueue.php @@ -41,9 +41,8 @@ protected function hookPush(): bool ])) ->setSpanKind(SpanKind::KIND_INTERNAL) ->setAttributes([ - TraceAttributes::CODE_FUNCTION_NAME => $function, - TraceAttributes::CODE_NAMESPACE => $class, - TraceAttributes::CODE_FILEPATH => $filename, + TraceAttributes::CODE_FUNCTION_NAME => sprintf('%s::%s', $class, $function), + TraceAttributes::CODE_FILE_PATH => $filename, TraceAttributes::CODE_LINE_NUMBER => $lineno, ]) ->startSpan(); diff --git a/src/LaravelInstrumentation.php b/src/LaravelInstrumentation.php index efd32ed..e3c210b 100644 --- a/src/LaravelInstrumentation.php +++ b/src/LaravelInstrumentation.php @@ -17,7 +17,7 @@ public static function register(): void $instrumentation = new CachedInstrumentation( 'io.opentelemetry.contrib.php.laravel', null, - 'https://opentelemetry.io/schemas/1.30.0', + 'https://opentelemetry.io/schemas/1.32.0', ); Hooks\Illuminate\Console\Command::hook($instrumentation);