Class OpenTelemetryMeterProvider
java.lang.Object
com.azure.core.metrics.opentelemetry.OpenTelemetryMeterProvider
- All Implemented Interfaces:
MeterProvider
Resolves and provides
Meter implementation.
This class is intended to be used by Azure client libraries and provides abstraction over different metrics implementations. Application developers should use metrics implementations such as OpenTelemetry or Micrometer directly.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateMeter(String libraryName, String libraryVersion, MetricsOptions options) Creates named and versioned OpenTelemetry-based implementation ofMeterUse global OpenTelemetry SDK configuration:
-
Constructor Details
-
OpenTelemetryMeterProvider
public OpenTelemetryMeterProvider()Creates an instance ofOpenTelemetryMeterProvider.
-
-
Method Details
-
createMeter
Creates named and versioned OpenTelemetry-based implementation ofMeterUse global OpenTelemetry SDK configuration:// configure OpenTelemetry SDK using io.opentelemetry:opentelemetry-sdk-extension-autoconfigure // AutoConfiguredOpenTelemetrySdk.initialize(); // configure Azure Client, no metric configuration needed AzureClient sampleClient = new AzureClientBuilder() .endpoint("https://my-client.azure.com") .build(); Span span = GlobalOpenTelemetry.getTracer("azure-core-samples") .spanBuilder("doWork") .startSpan(); try (Scope scope = span.makeCurrent()) { // do some work // Current context flows to OpenTelemetry metrics and is used to populate exemplars // you can also pass OpenTelemetry context explicitly by passing it under PARENT_TRACE_CONTEXT_KEY String response = sampleClient.methodCall("get items"); // do more work } span.end();It's also possible to pass custom OpenTelemetry SDK configuration// configure OpenTelemetry SDK SdkTracerProvider tracerProvider = SdkTracerProvider.builder() .addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder().build()).build()) .build(); SdkMeterProvider meterProvider = SdkMeterProvider.builder() .registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build()) .build(); OpenTelemetry openTelemetry = OpenTelemetrySdk.builder() .setTracerProvider(tracerProvider) .setMeterProvider(meterProvider) .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance())) .build(); Tracer tracer = openTelemetry.getTracer("azure-core-samples"); // pass custom OpenTelemetry instance to MetricsOptions MetricsOptions metricsOptions = new OpenTelemetryMetricsOptions() .setOpenTelemetry(openTelemetry); // configure Azure Client to use customized MetricOptions AzureClient sampleClient = new AzureClientBuilder() .endpoint("Https://my-client.azure.com") .clientOptions(new ClientOptions().setMetricsOptions(metricsOptions)) .build(); Span span = tracer.spanBuilder("doWork").startSpan(); io.opentelemetry.context.Context otelContext = io.opentelemetry.context.Context.current().with(span); // do some work // Context is used by OpenTelemetry metrics to populate exemplars, Context.current() will be used if no // explicit context is provided. String response = sampleClient.methodCall("get items", new Context(PARENT_TRACE_CONTEXT_KEY, otelContext)); // do more work span.end();- Specified by:
createMeterin interfaceMeterProvider- Parameters:
libraryName- Azure client library package namelibraryVersion- Azure client library versionoptions- instance ofMetricsOptions- Returns:
- a meter instance.
-