Skip to content
This repository was archived by the owner on Dec 5, 2025. It is now read-only.

Commit b16d063

Browse files
committed
fix: metric provider
1 parent 55aa0cd commit b16d063

File tree

3 files changed

+4
-71
lines changed

3 files changed

+4
-71
lines changed

src/OpenTelemetryServiceProvider.php

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@
1212
use OpenTelemetry\API\Globals;
1313
use OpenTelemetry\API\Metrics\MeterInterface;
1414
use OpenTelemetry\API\Trace\TracerInterface;
15-
use OpenTelemetry\SDK\Common\Util\ShutdownHandler;
16-
use OpenTelemetry\SDK\Metrics\MeterProviderFactory;
17-
use OpenTelemetry\SDK\Resource\Detectors\Sdk;
1815
use Overtrue\LaravelOpenTelemetry\Console\Commands\TestCommand;
1916
use Overtrue\LaravelOpenTelemetry\Facades\Measure;
2017
use Overtrue\LaravelOpenTelemetry\Http\Middleware\AddTraceId;
@@ -46,11 +43,6 @@ public function register(): void
4643
__DIR__.'/../config/otel.php', 'otel',
4744
);
4845

49-
// Check if OpenTelemetry is enabled
50-
if (! config('otel.enabled', true)) {
51-
return;
52-
}
53-
5446
// Register Tracer
5547
$this->app->singleton(Support\Measure::class, function ($app) {
5648
return new Support\Measure($app);
@@ -59,8 +51,7 @@ public function register(): void
5951
$this->app->alias(Support\Measure::class, 'opentelemetry.measure');
6052

6153
$this->app->singleton(TracerInterface::class, function () {
62-
return Globals::tracerProvider()
63-
->getTracer(config('otel.tracer_name', 'overtrue.laravel-open-telemetry'));
54+
return Globals::tracerProvider()->getTracer(config('otel.tracer_name', 'overtrue.laravel-open-telemetry'));
6455
});
6556

6657
$this->app->alias(TracerInterface::class, 'opentelemetry.tracer');
@@ -73,12 +64,7 @@ public function register(): void
7364

7465
// register custom meter
7566
$this->app->singleton(MeterInterface::class, function () {
76-
$resourceInfo = (new Sdk)->getResource();
77-
$meterProvider = (new MeterProviderFactory)->create($resourceInfo);
78-
ShutdownHandler::register($meterProvider->shutdown(...));
79-
Metric::setProvider($meterProvider);
80-
81-
return $meterProvider->getMeter(config('otel.meter_name', 'overtrue.laravel-open-telemetry'));
67+
return Globals::meterProvider()->getMeter(config('otel.meter_name', 'overtrue.laravel-open-telemetry'));
8268
});
8369

8470
$this->app->alias(MeterInterface::class, 'opentelemetry.meter');

src/Support/Metric.php

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
use Illuminate\Contracts\Foundation\Application;
66
use Illuminate\Support\Facades\Log;
7+
use OpenTelemetry\API\Globals;
78
use OpenTelemetry\API\Metrics\CounterInterface;
89
use OpenTelemetry\API\Metrics\GaugeInterface;
910
use OpenTelemetry\API\Metrics\HistogramInterface;
1011
use OpenTelemetry\API\Metrics\MeterInterface;
11-
use OpenTelemetry\API\Metrics\MeterProviderInterface;
1212
use OpenTelemetry\API\Metrics\Noop\NoopMeter;
1313
use OpenTelemetry\API\Metrics\ObservableGaugeInterface;
1414
use Throwable;
@@ -17,8 +17,6 @@ class Metric
1717
{
1818
private static ?bool $enabled = null;
1919

20-
private static ?MeterProviderInterface $meterProvider = null;
21-
2220
public function __construct(protected Application $app) {}
2321

2422
// ======================= Enable/Disable Management =======================
@@ -47,17 +45,7 @@ public function isEnabled(): bool
4745
*/
4846
public function flush(): void
4947
{
50-
self::$meterProvider?->forceFlush();
51-
}
52-
53-
public static function getProvider(): MeterProviderInterface
54-
{
55-
return self::$meterProvider;
56-
}
57-
58-
public static function setProvider(MeterProviderInterface $meterProvider): void
59-
{
60-
self::$meterProvider = $meterProvider;
48+
Globals::meterProvider()?->forceFlush();
6149
}
6250

6351
// ======================= Core OpenTelemetry API =======================

tests/OpenTelemetryServiceProviderTest.php

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -133,47 +133,6 @@ public function test_provider_logs_startup_and_registration()
133133
$this->assertTrue(true); // Mockery will fail if expectation not met
134134
}
135135

136-
public function test_provider_does_not_register_services_when_disabled()
137-
{
138-
// Create a fresh Laravel application WITHOUT auto-loading our package provider
139-
$app = new \Illuminate\Foundation\Application(
140-
realpath(__DIR__.'/../')
141-
);
142-
143-
$app->singleton(
144-
\Illuminate\Contracts\Http\Kernel::class,
145-
\Illuminate\Foundation\Http\Kernel::class
146-
);
147-
148-
$app->singleton(
149-
\Illuminate\Contracts\Console\Kernel::class,
150-
\Illuminate\Foundation\Console\Kernel::class
151-
);
152-
153-
$app->singleton(
154-
\Illuminate\Contracts\Debug\ExceptionHandler::class,
155-
\Illuminate\Foundation\Exceptions\Handler::class
156-
);
157-
158-
// Set config with enabled = false
159-
$app['config'] = new \Illuminate\Config\Repository([
160-
'otel' => array_merge(
161-
include __DIR__.'/../config/otel.php',
162-
['enabled' => false]
163-
),
164-
]);
165-
166-
// Create and register service provider
167-
$provider = new OpenTelemetryServiceProvider($app);
168-
$provider->register();
169-
170-
// Verify services are NOT bound when disabled
171-
$this->assertFalse($app->bound(Measure::class));
172-
$this->assertFalse($app->bound(\OpenTelemetry\API\Trace\TracerInterface::class));
173-
$this->assertFalse($app->bound(\OpenTelemetry\API\Metrics\MeterInterface::class));
174-
$this->assertFalse($app->bound(\Overtrue\LaravelOpenTelemetry\Support\Metric::class));
175-
}
176-
177136
public function test_tracer_provider_is_initialized()
178137
{
179138
// 获取全局 TracerProvider

0 commit comments

Comments
 (0)