This repository was archived by the owner on Dec 5, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +12
-4
lines changed Expand file tree Collapse file tree 2 files changed +12
-4
lines changed Original file line number Diff line number Diff line change 1212use OpenTelemetry \API \Globals ;
1313use OpenTelemetry \API \Metrics \MeterInterface ;
1414use OpenTelemetry \API \Trace \TracerInterface ;
15+ use OpenTelemetry \SDK \Metrics \MeterProviderFactory ;
16+ use OpenTelemetry \SDK \Resource \Detectors \Sdk ;
1517use Overtrue \LaravelOpenTelemetry \Console \Commands \TestCommand ;
1618use Overtrue \LaravelOpenTelemetry \Facades \Measure ;
1719use Overtrue \LaravelOpenTelemetry \Http \Middleware \AddTraceId ;
1820use Overtrue \LaravelOpenTelemetry \Http \Middleware \TraceRequest ;
21+ use Overtrue \LaravelOpenTelemetry \Support \Metric ;
1922
2023class 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 ' );
Original file line number Diff line number Diff line change 44
55use Illuminate \Contracts \Foundation \Application ;
66use Illuminate \Support \Facades \Log ;
7- use OpenTelemetry \API \Globals ;
87use OpenTelemetry \API \Metrics \CounterInterface ;
98use OpenTelemetry \API \Metrics \GaugeInterface ;
109use OpenTelemetry \API \Metrics \HistogramInterface ;
1110use OpenTelemetry \API \Metrics \MeterInterface ;
11+ use OpenTelemetry \API \Metrics \MeterProviderInterface ;
1212use OpenTelemetry \API \Metrics \Noop \NoopMeter ;
1313use OpenTelemetry \API \Metrics \ObservableGaugeInterface ;
1414use 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 =======================
You can’t perform that action at this time.
0 commit comments