Search code examples
c#asp.net-coreaws-xraydistributed-tracing

What are my options for viewing the traces asp.net core captures in my applications?


I've recently been reading up on the topic of distributed tracing in asp.net core. I'm using asp.net core 5 and can see that it is automatically creating tracing information that is compatible with W3C context tracing. I plan to use this information to help improve my standard logging, however, I'm also wondering what my options are for recording this tracing information to be used in a visualizer.

I'm guessing Application Insights seamlessly integrates with this (correct me if that's wrong), but what options do I have other than AI? I am generally using AWS services for everything as my client is in the AWS cloud but it looks like the .net core libraries for AWS X-Ray roll their own trace data and won't send the tracing information .net is already capturing, which is kind of annoying.

What other places besides AI can I send this tracing information to view it? Or is it possible to do this with AWS X-Ray and I'm just not finding the answer as to how that's accomplished?


Solution

  • I think I found the perfect answer to this. Re-reading the OpenTelemetry documentation it looks like it is made to integrate seamlessly with the asp.net core Activities functionality present in .net core > 3.

    From https://opentelemetry.io/docs/net/getting-started/

    OpenTelemetry for .NET is unique among OpenTelemetry implementations, as it is integrated with the .NET System.Diagnostics library. At a high level, you can think of OpenTelemetry for .NET as a bridge between the telemetry available through System.Diagnostics and the greater OpenTelemetry ecosystem, such as OpenTelemetry Protocol (OTLP) and the OpenTelemetry Collector.

    This gives me the ability to export to a lot of different tracing providers like Jaeger and Zipkin, but poking around in the NuGet packages for OpenTelemetry I also noticed that it has an AWS X-Ray Exporter, which is awesome if it works well.