Class OpenTelemetryMeterProvider
java.lang.Object
com.azure.core.metrics.opentelemetry.OpenTelemetryMeterProvider
- All Implemented Interfaces:
MeterProvider
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptioncreateMeter
(String libraryName, String libraryVersion, MetricsOptions options) Creates named and versioned OpenTelemetry-based implementation ofMeter
Use global OpenTelemetry SDK configuration:
-
Constructor Details
-
OpenTelemetryMeterProvider
public OpenTelemetryMeterProvider()
-
-
Method Details
-
createMeter
Creates named and versioned OpenTelemetry-based implementation ofMeter
Use global OpenTelemetry SDK configuration:// configure OpenTelemetry SDK using OpenTelemetry SDK 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 SdkMeterProvider to MetricsOptions MetricsOptions metricsOptions = new OpenTelemetryMetricsOptions() .setProvider(openTelemetry.getMeterProvider()); // 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:
createMeter
in interfaceMeterProvider
- Parameters:
libraryName
- Azure client library package namelibraryVersion
- Azure client library versionoptions
- instance ofMetricsOptions
- Returns:
- a meter instance.
-