private static void Configure()

in tools/code/common/OpenTelemetry.cs [28:54]


    private static void Configure(IServiceCollection services, IConfiguration configuration, string activitySourceName)
    {
#pragma warning disable CA2000 // Dispose objects before losing scope
        services.TryAddSingleton(new ActivitySource(activitySourceName));
#pragma warning restore CA2000 // Dispose objects before losing scope

        services.AddOpenTelemetry()
                .WithMetrics(metrics => metrics.AddHttpClientInstrumentation()
                                               .AddRuntimeInstrumentation()
                                               .AddMeter("*"))
                .WithTracing(tracing => tracing.AddHttpClientInstrumentation()
                                               .AddSource("*")
                                               .SetSampler<AlwaysOnSampler>());

        configuration.TryGetValue("OTEL_EXPORTER_OTLP_ENDPOINT")
                     .Iter(_ =>
                     {
                         services.AddLogging(builder => builder.AddOpenTelemetry());
                         services.Configure<OpenTelemetryLoggerOptions>(logging => logging.AddOtlpExporter())
                                 .ConfigureOpenTelemetryMeterProvider(metrics => metrics.AddOtlpExporter())
                                 .ConfigureOpenTelemetryTracerProvider(tracing => tracing.AddOtlpExporter());
                     });

        configuration.TryGetValue("APPLICATIONINSIGHTS_CONNECTION_STRING")
                     .Iter(_ => services.AddOpenTelemetry()
                                        .UseAzureMonitor());
    }