opentelemetry-dotnet icon indicating copy to clipboard operation
opentelemetry-dotnet copied to clipboard

http.route attribute is not reported for health check request

Open specialforest opened this issue 1 year ago • 0 comments

Bug Report

List of all OpenTelemetry NuGet packages and version that you are using (e.g. OpenTelemetry 1.0.2):

  <PackageReference Include="OpenTelemetry" Version="1.7.0" />
  <PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.7.0" />
  <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.7.0" />
  <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.7.0" />

Runtime version (e.g. net462, net48, netcoreapp3.1, net6.0 etc. You can find this information from the *.csproj file):

net6.0

Symptom

http.server.request.duration metric emitted for /hc health request doesn't have http.route attribute.

What is the expected behavior?

http.server.request.duration metric emitted has http.route attribute with a value of "/hc".

What is the actual behavior?

http.route attribute is absent:

info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/1.1 GET https://localhost:5001/hc - -
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished HTTP/1.1 GET https://localhost:5001/hc - - - 200 - text/plain 16.8060ms
Resource associated with Metric:
    telemetry.sdk.name: opentelemetry
    telemetry.sdk.language: dotnet
    telemetry.sdk.version: 1.7.0
    service.name: unknown_service:SandboxOTel

Metric Name: http.server.request.duration, Duration of HTTP server requests., Unit: s, Meter: OpenTelemetry.Instrumentation.AspNetCore/1.0.0.0
(2024-01-11T19:08:40.5818922Z, 2024-01-11T19:08:50.5163489Z] http.request.method: GET http.response.status_code: 200 network.protocol.version: 1.1 url.scheme: https Histogram
Value: Sum: 0.0204545 Count: 1 Min: 0.0204545 Max: 0.0204545
(-Infinity,0.005]:0
(0.005,0.01]:0
(0.01,0.025]:1
(0.025,0.05]:0
(0.05,0.075]:0
(0.075,0.1]:0
(0.1,0.25]:0
(0.25,0.5]:0
(0.5,0.75]:0
(0.75,1]:0
(1,2.5]:0
(2.5,5]:0
(5,7.5]:0
(7.5,10]:0
(10,+Infinity]:0

Reproduce

            var builder = WebApplication.CreateBuilder(args);
            
            builder.Logging.ClearProviders();
            builder.Logging.AddConsole();

            builder.Services.AddOpenTelemetry()
                .WithMetrics(metricsBuilder =>
                {
                    metricsBuilder.AddMeter("*");
                    metricsBuilder.AddAspNetCoreInstrumentation();
                    metricsBuilder.AddConsoleExporter();
                });

            builder.Services.AddSingleton(new Meter("Sandbox"));

            builder.Services.AddHealthChecks();

            var app = builder.Build();
            app.UseHealthChecks("/hc", new HealthCheckOptions()
            {
                Predicate = (check) => check.Tags.Contains("live"),
            });

            app.Run();

Additional Context

None.

specialforest avatar Jan 11 '24 19:01 specialforest