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

Track Cancelled/Aborted Request

Open cliedeman opened this issue 1 year ago • 4 comments

Feature Request

I would like to track the percentage of aborted/cancelled http server requests

Describe the solution you'd like:

https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.httpcontext.requestaborted?view=aspnetcore-8.0

Describe alternatives you've considered.

Custom Enrichment

Additional Context

Add any other context about the feature request here.

cliedeman avatar Feb 01 '24 08:02 cliedeman

Can you clarify the ask some more?

cijothomas avatar Feb 01 '24 18:02 cijothomas

Sure.

Here is an example of how we could do it with enrich.

                    .AddAspNetCoreInstrumentation(opts =>
                    {
                        opts.Enrich = (string _, HttpContext context, ref TagList tags) =>
                        {
                            tags.Add("cancelled", context.RequestAborted.IsCancellationRequested);
                        };
                    })

cliedeman avatar Feb 01 '24 19:02 cliedeman

I see you are asking if the asp.net core instrumentation should do this by default, without having to write the Enrich? Then the answer is generally no, as the instrumentation follows otel conventions, and there isn't anything about "cancellation requested". It is possible to propose something to the Otel Semantic Conventions group, but its usually accepted for very common things. Your best bet would likely be to do such customizations via Enrich itself.

cijothomas avatar Feb 01 '24 20:02 cijothomas

thanks @cijothomas that makes sense.

I looked around in the semantic conventions at this PR and this open issue

https://opentelemetry.io/docs/specs/semconv/http/http-spans/#common-attributes

According to the docs for error.type we could stipulate timeout or requestAborted in the error.type.

Currently a request would display as successful in the traces/metrics but actually be aborted (aka failed)?

cliedeman avatar Feb 03 '24 19:02 cliedeman