Skip to content

Commit 16dc809

Browse files
Laravel: pass instrumentation Context to hooks
1 parent 0d7dcf4 commit 16dc809

File tree

11 files changed

+98
-83
lines changed

11 files changed

+98
-83
lines changed

src/Instrumentation/Laravel/src/Hooks/Hook.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,15 @@
44

55
namespace OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks;
66

7+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
78
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
8-
use OpenTelemetry\API\Logs\LoggerInterface;
9-
use OpenTelemetry\API\Metrics\MeterInterface;
10-
use OpenTelemetry\API\Trace\TracerInterface;
11-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
9+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
1210

1311
interface Hook
1412
{
1513
public function instrument(
14+
LaravelInstrumentation $instrumentation,
1615
HookManagerInterface $hookManager,
17-
LaravelConfiguration $configuration,
18-
LoggerInterface $logger,
19-
MeterInterface $meter,
20-
TracerInterface $tracer,
16+
InstrumentationContext $context,
2117
): void;
2218
}

src/Instrumentation/Laravel/src/Hooks/Illuminate/Console/Command.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,32 @@
55
namespace OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Illuminate\Console;
66

77
use Illuminate\Console\Command as IlluminateCommand;
8+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
89
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
9-
use OpenTelemetry\API\Logs\LoggerInterface;
10-
use OpenTelemetry\API\Metrics\MeterInterface;
1110
use OpenTelemetry\API\Trace\Span;
1211
use OpenTelemetry\API\Trace\TracerInterface;
1312
use OpenTelemetry\Context\Context;
1413
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
1514
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\PostHookTrait;
16-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
15+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
1716
use OpenTelemetry\SemConv\TraceAttributes;
17+
use OpenTelemetry\SemConv\Version;
1818
use Throwable;
1919

2020
class Command implements Hook
2121
{
2222
use PostHookTrait;
2323

2424
public function instrument(
25+
LaravelInstrumentation $instrumentation,
2526
HookManagerInterface $hookManager,
26-
LaravelConfiguration $configuration,
27-
LoggerInterface $logger,
28-
MeterInterface $meter,
29-
TracerInterface $tracer,
27+
InstrumentationContext $context,
3028
): void {
29+
$tracer = $context->tracerProvider->getTracer(
30+
$instrumentation->buildProviderName('console', 'command'),
31+
schemaUrl: Version::VERSION_1_24_0->url(),
32+
);
33+
3134
$this->hookExecute($hookManager, $tracer);
3235
}
3336

src/Instrumentation/Laravel/src/Hooks/Illuminate/Contracts/Console/Kernel.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@
66

77
use Illuminate\Console\Command;
88
use Illuminate\Contracts\Console\Kernel as KernelContract;
9+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
910
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
10-
use OpenTelemetry\API\Logs\LoggerInterface;
11-
use OpenTelemetry\API\Metrics\MeterInterface;
1211
use OpenTelemetry\API\Trace\Span;
1312
use OpenTelemetry\API\Trace\SpanKind;
1413
use OpenTelemetry\API\Trace\StatusCode;
@@ -17,9 +16,9 @@
1716
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
1817
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Illuminate\Queue\AttributesBuilder;
1918
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\PostHookTrait;
20-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
2119
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
2220
use OpenTelemetry\SemConv\TraceAttributes;
21+
use OpenTelemetry\SemConv\Version;
2322
use Throwable;
2423

2524
class Kernel implements Hook
@@ -28,13 +27,16 @@ class Kernel implements Hook
2827
use PostHookTrait;
2928

3029
public function instrument(
30+
LaravelInstrumentation $instrumentation,
3131
HookManagerInterface $hookManager,
32-
LaravelConfiguration $configuration,
33-
LoggerInterface $logger,
34-
MeterInterface $meter,
35-
TracerInterface $tracer,
32+
InstrumentationContext $context,
3633
): void {
37-
if (LaravelInstrumentation::shouldTraceCli()) {
34+
$tracer = $context->tracerProvider->getTracer(
35+
$instrumentation->buildProviderName('console', 'kernel'),
36+
schemaUrl: Version::VERSION_1_24_0->url(),
37+
);
38+
39+
if ($instrumentation->shouldTraceCli()) {
3840
$this->hookHandle($hookManager, $tracer);
3941
}
4042
}

src/Instrumentation/Laravel/src/Hooks/Illuminate/Contracts/Http/Kernel.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88
use Illuminate\Http\Request;
99
use Illuminate\Routing\Route;
1010
use OpenTelemetry\API\Globals;
11+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
1112
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
12-
use OpenTelemetry\API\Logs\LoggerInterface;
13-
use OpenTelemetry\API\Metrics\MeterInterface;
1413
use OpenTelemetry\API\Trace\Span;
1514
use OpenTelemetry\API\Trace\SpanInterface;
1615
use OpenTelemetry\API\Trace\SpanKind;
@@ -19,10 +18,11 @@
1918
use OpenTelemetry\Context\Context;
2019
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
2120
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\PostHookTrait;
22-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
21+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
2322
use OpenTelemetry\Contrib\Instrumentation\Laravel\Propagators\HeadersPropagator;
2423
use OpenTelemetry\Contrib\Instrumentation\Laravel\Propagators\ResponsePropagationSetter;
2524
use OpenTelemetry\SemConv\TraceAttributes;
25+
use OpenTelemetry\SemConv\Version;
2626
use Symfony\Component\HttpFoundation\Response;
2727
use Throwable;
2828

@@ -31,12 +31,15 @@ class Kernel implements Hook
3131
use PostHookTrait;
3232

3333
public function instrument(
34+
LaravelInstrumentation $instrumentation,
3435
HookManagerInterface $hookManager,
35-
LaravelConfiguration $configuration,
36-
LoggerInterface $logger,
37-
MeterInterface $meter,
38-
TracerInterface $tracer,
36+
InstrumentationContext $context,
3937
): void {
38+
$tracer = $context->tracerProvider->getTracer(
39+
$instrumentation->buildProviderName('http', 'kernel'),
40+
schemaUrl: Version::VERSION_1_24_0->url(),
41+
);
42+
4043
$this->hookHandle($hookManager, $tracer);
4144
}
4245

src/Instrumentation/Laravel/src/Hooks/Illuminate/Contracts/Queue/Queue.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,18 @@
77
use DateInterval;
88
use DateTimeInterface;
99
use Illuminate\Contracts\Queue\Queue as QueueContract;
10+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
1011
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
11-
use OpenTelemetry\API\Logs\LoggerInterface;
12-
use OpenTelemetry\API\Metrics\MeterInterface;
1312
use OpenTelemetry\API\Trace\SpanKind;
1413
use OpenTelemetry\API\Trace\TracerInterface;
1514
use OpenTelemetry\Context\Context;
1615
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
1716
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Illuminate\Queue\AttributesBuilder;
1817
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\PostHookTrait;
19-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
18+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
2019
use OpenTelemetry\SemConv\TraceAttributes;
2120
use OpenTelemetry\SemConv\TraceAttributeValues;
21+
use OpenTelemetry\SemConv\Version;
2222
use Throwable;
2323

2424
class Queue implements Hook
@@ -27,12 +27,15 @@ class Queue implements Hook
2727
use PostHookTrait;
2828

2929
public function instrument(
30+
LaravelInstrumentation $instrumentation,
3031
HookManagerInterface $hookManager,
31-
LaravelConfiguration $configuration,
32-
LoggerInterface $logger,
33-
MeterInterface $meter,
34-
TracerInterface $tracer,
32+
InstrumentationContext $context,
3533
): void {
34+
$tracer = $context->tracerProvider->getTracer(
35+
$instrumentation->buildProviderName('queue'),
36+
schemaUrl: Version::VERSION_1_24_0->url(),
37+
);
38+
3639
$this->hookBulk($hookManager, $tracer);
3740
$this->hookLater($hookManager, $tracer);
3841
$this->hookPushRaw($hookManager, $tracer);

src/Instrumentation/Laravel/src/Hooks/Illuminate/Foundation/Application.php

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,37 @@
66

77
use Illuminate\Contracts\Foundation\Application as ApplicationContract;
88
use Illuminate\Foundation\Application as FoundationalApplication;
9+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
910
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
10-
use OpenTelemetry\API\Logs\LoggerInterface;
11-
use OpenTelemetry\API\Metrics\MeterInterface;
12-
use OpenTelemetry\API\Trace\TracerInterface;
1311
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
14-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
12+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
1513
use OpenTelemetry\Contrib\Instrumentation\Laravel\Watchers\CacheWatcher;
1614
use OpenTelemetry\Contrib\Instrumentation\Laravel\Watchers\ClientRequestWatcher;
1715
use OpenTelemetry\Contrib\Instrumentation\Laravel\Watchers\ExceptionWatcher;
1816
use OpenTelemetry\Contrib\Instrumentation\Laravel\Watchers\LogWatcher;
1917
use OpenTelemetry\Contrib\Instrumentation\Laravel\Watchers\QueryWatcher;
2018
use OpenTelemetry\Contrib\Instrumentation\Laravel\Watchers\RedisCommand\RedisCommandWatcher;
2119
use OpenTelemetry\Contrib\Instrumentation\Laravel\Watchers\Watcher;
20+
use OpenTelemetry\SemConv\Version;
2221
use Throwable;
2322

2423
class Application implements Hook
2524
{
2625
public function instrument(
26+
LaravelInstrumentation $instrumentation,
2727
HookManagerInterface $hookManager,
28-
LaravelConfiguration $configuration,
29-
LoggerInterface $logger,
30-
MeterInterface $meter,
31-
TracerInterface $tracer,
28+
InstrumentationContext $context,
3229
): void {
30+
$logger = $context->loggerProvider->getLogger(
31+
$instrumentation->buildProviderName('foundation', 'application'),
32+
schemaUrl: Version::VERSION_1_24_0->url(),
33+
);
34+
35+
$tracer = $context->tracerProvider->getTracer(
36+
$instrumentation->buildProviderName('foundation', 'application'),
37+
schemaUrl: Version::VERSION_1_24_0->url(),
38+
);
39+
3340
$hookManager->hook(
3441
FoundationalApplication::class,
3542
'__construct',

src/Instrumentation/Laravel/src/Hooks/Illuminate/Foundation/Console/ServeCommand.php

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,25 @@
55
namespace OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Illuminate\Foundation\Console;
66

77
use Illuminate\Foundation\Console\ServeCommand as FoundationServeCommand;
8+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
89
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
9-
use OpenTelemetry\API\Logs\LoggerInterface;
10-
use OpenTelemetry\API\Metrics\MeterInterface;
11-
use OpenTelemetry\API\Trace\TracerInterface;
1210
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
13-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
11+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
1412

1513
/**
1614
* Instrument Laravel's local PHP development server.
1715
*/
1816
class ServeCommand implements Hook
1917
{
2018
public function instrument(
19+
LaravelInstrumentation $instrumentation,
2120
HookManagerInterface $hookManager,
22-
LaravelConfiguration $configuration,
23-
LoggerInterface $logger,
24-
MeterInterface $meter,
25-
TracerInterface $tracer,
21+
InstrumentationContext $context,
2622
): void {
2723
$hookManager->hook(
2824
FoundationServeCommand::class,
2925
'handle',
30-
preHook: static function (FoundationServeCommand $serveCommand, array $params, string $class, string $function, ?string $filename, ?int $lineno) use ($tracer) {
26+
preHook: static function (FoundationServeCommand $serveCommand, array $params, string $class, string $function, ?string $filename, ?int $lineno) {
3127
foreach ($_ENV as $key => $value) {
3228
if (str_starts_with($key, 'OTEL_') && !in_array($key, FoundationServeCommand::$passthroughVariables)) {
3329
FoundationServeCommand::$passthroughVariables[] = $key;

src/Instrumentation/Laravel/src/Hooks/Illuminate/Queue/Queue.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,21 @@
55
namespace OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Illuminate\Queue;
66

77
use Illuminate\Queue\Queue as AbstractQueue;
8+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
89
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
9-
use OpenTelemetry\API\Logs\LoggerInterface;
10-
use OpenTelemetry\API\Metrics\MeterInterface;
1110
use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator;
12-
use OpenTelemetry\API\Trace\TracerInterface;
1311
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
14-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
12+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
1513
use Throwable;
1614

1715
class Queue implements Hook
1816
{
1917
use AttributesBuilder;
2018

2119
public function instrument(
20+
LaravelInstrumentation $instrumentation,
2221
HookManagerInterface $hookManager,
23-
LaravelConfiguration $configuration,
24-
LoggerInterface $logger,
25-
MeterInterface $meter,
26-
TracerInterface $tracer,
22+
InstrumentationContext $context,
2723
): void {
2824
$hookManager->hook(
2925
AbstractQueue::class,

src/Instrumentation/Laravel/src/Hooks/Illuminate/Queue/SyncQueue.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55
namespace OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Illuminate\Queue;
66

77
use Illuminate\Queue\SyncQueue as LaravelSyncQueue;
8+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
89
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
9-
use OpenTelemetry\API\Logs\LoggerInterface;
10-
use OpenTelemetry\API\Metrics\MeterInterface;
1110
use OpenTelemetry\API\Trace\SpanKind;
1211
use OpenTelemetry\API\Trace\TracerInterface;
1312
use OpenTelemetry\Context\Context;
1413
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
1514
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\PostHookTrait;
16-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
15+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
1716
use OpenTelemetry\SemConv\TraceAttributes;
17+
use OpenTelemetry\SemConv\Version;
1818
use Throwable;
1919

2020
class SyncQueue implements Hook
@@ -23,12 +23,15 @@ class SyncQueue implements Hook
2323
use PostHookTrait;
2424

2525
public function instrument(
26+
LaravelInstrumentation $instrumentation,
2627
HookManagerInterface $hookManager,
27-
LaravelConfiguration $configuration,
28-
LoggerInterface $logger,
29-
MeterInterface $meter,
30-
TracerInterface $tracer,
28+
InstrumentationContext $context,
3129
): void {
30+
$tracer = $context->tracerProvider->getTracer(
31+
$instrumentation->buildProviderName('queue', 'sync'),
32+
schemaUrl: Version::VERSION_1_24_0->url(),
33+
);
34+
3235
$this->hookPush($hookManager, $tracer);
3336
}
3437

src/Instrumentation/Laravel/src/Hooks/Illuminate/Queue/Worker.php

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66

77
use Illuminate\Contracts\Queue\Job;
88
use Illuminate\Queue\Worker as QueueWorker;
9+
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\Context as InstrumentationContext;
910
use OpenTelemetry\API\Instrumentation\AutoInstrumentation\HookManagerInterface;
10-
use OpenTelemetry\API\Logs\LoggerInterface;
11-
use OpenTelemetry\API\Metrics\MeterInterface;
1211
use OpenTelemetry\API\Trace\Propagation\TraceContextPropagator;
1312
use OpenTelemetry\API\Trace\Span;
1413
use OpenTelemetry\API\Trace\SpanKind;
1514
use OpenTelemetry\API\Trace\TracerInterface;
1615
use OpenTelemetry\Context\Context;
1716
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\Hook;
1817
use OpenTelemetry\Contrib\Instrumentation\Laravel\Hooks\PostHookTrait;
19-
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelConfiguration;
18+
use OpenTelemetry\Contrib\Instrumentation\Laravel\LaravelInstrumentation;
2019
use OpenTelemetry\SemConv\TraceAttributes;
2120
use OpenTelemetry\SemConv\TraceAttributeValues;
21+
use OpenTelemetry\SemConv\Version;
2222
use Throwable;
2323

2424
class Worker implements Hook
@@ -27,12 +27,15 @@ class Worker implements Hook
2727
use PostHookTrait;
2828

2929
public function instrument(
30+
LaravelInstrumentation $instrumentation,
3031
HookManagerInterface $hookManager,
31-
LaravelConfiguration $configuration,
32-
LoggerInterface $logger,
33-
MeterInterface $meter,
34-
TracerInterface $tracer,
32+
InstrumentationContext $context,
3533
): void {
34+
$tracer = $context->tracerProvider->getTracer(
35+
$instrumentation->buildProviderName('queue', 'worker'),
36+
schemaUrl: Version::VERSION_1_24_0->url(),
37+
);
38+
3639
$this->hookWorkerProcess($hookManager, $tracer);
3740
$this->hookWorkerGetNextJob($hookManager, $tracer);
3841
}

0 commit comments

Comments
 (0)