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

Commit 180f8c7

Browse files
author
billpyang
committed
fix:自定义meterProvider
1 parent d0c1d06 commit 180f8c7

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

src/OpenTelemetryServiceProvider.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@
1212
use OpenTelemetry\API\Globals;
1313
use OpenTelemetry\API\Metrics\MeterInterface;
1414
use OpenTelemetry\API\Trace\TracerInterface;
15+
use OpenTelemetry\SDK\Metrics\MeterProviderFactory;
16+
use OpenTelemetry\SDK\Resource\Detectors\Sdk;
1517
use Overtrue\LaravelOpenTelemetry\Console\Commands\TestCommand;
1618
use Overtrue\LaravelOpenTelemetry\Facades\Measure;
1719
use Overtrue\LaravelOpenTelemetry\Http\Middleware\AddTraceId;
1820
use Overtrue\LaravelOpenTelemetry\Http\Middleware\TraceRequest;
21+
use Overtrue\LaravelOpenTelemetry\Support\Metric;
1922

2023
class OpenTelemetryServiceProvider extends ServiceProvider
2124
{
@@ -62,9 +65,12 @@ public function register(): void
6265
});
6366
$this->app->alias(Support\Metric::class, 'opentelemetry.metric');
6467

68+
// register custom meter
6569
$this->app->singleton(MeterInterface::class, function () {
66-
return Globals::meterProvider()
67-
->getMeter(config('otel.meter_name', 'overtrue.laravel-open-telemetry'));
70+
$resourceInfo = (new Sdk)->getResource();
71+
Metric::$meterProvider = (new MeterProviderFactory)->create($resourceInfo);
72+
73+
return Metric::$meterProvider->getMeter(config('otel.meter_name', 'overtrue.laravel-open-telemetry'));
6874
});
6975

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

src/Support/Metric.php

Lines changed: 4 additions & 2 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;
87
use OpenTelemetry\API\Metrics\CounterInterface;
98
use OpenTelemetry\API\Metrics\GaugeInterface;
109
use OpenTelemetry\API\Metrics\HistogramInterface;
1110
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,6 +17,8 @@ class Metric
1717
{
1818
private static ?bool $enabled = null;
1919

20+
public static ?MeterProviderInterface $meterProvider = null;
21+
2022
public function __construct(protected Application $app) {}
2123

2224
// ======================= Enable/Disable Management =======================
@@ -45,7 +47,7 @@ public function isEnabled(): bool
4547
*/
4648
public function flush(): void
4749
{
48-
Globals::meterProvider()?->forceFlush();
50+
self::$meterProvider?->forceFlush();
4951
}
5052

5153
// ======================= Core OpenTelemetry API =======================

0 commit comments

Comments
 (0)