# Distributed Tracing & Open Telemtry ## πŸ“˜ Resources - [Awesome OpenTelemetry](https://github.com/magsther/awesome-opentelemetry) - A curated list of OpenTelemetry resources - [open-telemetry/semantic-conventions](https://github.com/open-telemetry/semantic-conventions) - Defines standards for generating consistent, accessible telemetry across a variety of domains ## πŸ“• Articles - [What is OpenTelemetry? - opentelemetry.io](https://opentelemetry.io/docs/concepts/what-is-opentelemetry/) - [OpenTelemetry Specification Overview - opentelemetry.io](https://opentelemetry.io/docs/reference/specification/overview/) - [OpenTelemetry Specification - opentelemetry.io](https://opentelemetry.io/docs/reference/specification/) - [Trace Semantic Conventions - opentelemetry.io](https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/) - [Baggage in OpenTelemetry - opentelemetry.io](https://opentelemetry.io/docs/concepts/signals/baggage/) - [Tracing in OpenTelemetry - opentelemetry.io](https://opentelemetry.io/docs/concepts/signals/traces/) - [Metrics in OpenTelemetry - opentelemetry.io](https://opentelemetry.io/docs/concepts/signals/metrics/) - [Getting Started - opentelemetry.io](https://opentelemetry.io/docs/instrumentation/net/getting-started/) - [Using instrumentation libraries - opentelemetry.io](https://opentelemetry.io/docs/instrumentation/net/libraries/) - [Manual Instrumentation - opentelemetry.io](https://opentelemetry.io/docs/instrumentation/net/manual/) - [Exporters - opentelemetry.io](https://opentelemetry.io/docs/instrumentation/net/exporters/) - [Collect a distributed trace](https://docs.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-collection-walkthroughs) - [NET distributed tracing concepts](https://docs.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-concepts) - [Adding distributed tracing instrumentation](https://docs.microsoft.com/en-us/dotnet/core/diagnostics/distributed-tracing-instrumentation-walkthroughs) - [OpenTelemetry .NET API](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry.Api/README.md) - [Getting Started with OpenTelemetry .NET in 5 Minutes](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/docs/trace/getting-started) - [OpenTelemetry .NET SDK](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/src/OpenTelemetry) - [Extending the OpenTelemetry .NET SDK](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/docs/trace/extending-the-sdk/README.md) - [Customizing OpenTelemetry .NET SDK](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/docs/trace/customizing-the-sdk/README.md) - [EventSource User’s Guide](https://github.com/microsoft/dotnet-samples/blob/master/Microsoft.Diagnostics.Tracing/EventSource/docs/EventSource.md) - [DiagnosticSource User's Guide](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/DiagnosticSourceUsersGuide.md) - [Activity User Guide](https://github.com/dotnet/corefx/blob/master/src/System.Diagnostics.DiagnosticSource/src/ActivityUserGuide.md) - [Improve Activity API usability and OpenTelemetry integration](https://github.com/dotnet/designs/blob/main/accepted/2020/diagnostics/activity-improvements.md) - [Improve Activity API usability and OpenTelemetry integration (Part 2)](https://github.com/dotnet/designs/blob/main/accepted/2020/diagnostics/activity-improvements-2.md) - [The TraceEvent Library Programmers Guide](https://github.com/microsoft/dotnet-samples/blob/master/Microsoft.Diagnostics.Tracing/TraceEvent/docs/TraceEvent.md) - [Messaging Attributes Conventions](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/messaging.md#messaging-attributes)) - [Semantic conventions for HTTP spans](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md) - [Semantic conventions for RPC spans](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/rpc.md) - [The Big Pieces: OpenTelemetry specification](https://lightstep.com/blog/opentelemetry-specification) - [The Big Pieces: OpenTelemetry context propagation](https://lightstep.com/blog/opentelemetry-context-propagation) - [The Big Pieces: OpenTelemetry client design and architecture](https://lightstep.com/blog/opentelemetry-client-design-and-architecture) - [The Big Pieces: OpenTelemetry Collector design and architecture](https://lightstep.com/blog/opentelemetry-collector-design-and-architecture) - [Using W3C Trace Context standard in distributed tracing](https://dev.to/luizhlelis/using-w3c-trace-context-standard-in-distributed-tracing-3743) - [Building End-to-End Diagnostics and Tracing: An Intro](https://jimmybogard.com/building-end-to-end-diagnostics-and-tracing-a-primer/) - [Distributed Tracing in ASP.NET Core with Jaeger and Tye Part 1 - Distributed Tracing](https://thecloudblog.net/post/distributed-tracing-in-asp.net-core-with-jaeger-and-tye-part-1-distributed-tracing/) - [Distributed Tracing in ASP.NET Core with Jaeger and Tye Part 2 - Project Tye](https://thecloudblog.net/post/distributed-tracing-in-asp.net-core-with-jaeger-and-tye-part-2-project-tye/) - [Getting Started with OpenTelemetry .NET C#](https://opentelemetry.lightstep.com/csharp/) - [OpenTelemetry .NET reaches v1.0](https://devblogs.microsoft.com/dotnet/opentelemetry-net-reaches-v1-0/) - [Deep Dive into Open Telemetry for .NET](https://rehansaeed.com/deep-dive-into-open-telemetry-for-net/) - [Open Telemetry for ASP.NET Core](https://rehansaeed.com/open-telemetry-for-asp-net-core/) - [Exporting Open Telemetry Data to Jaeger](https://rehansaeed.com/exporting-open-telemetry-data-to-jaeger/) - [OpenTracing and C#](https://www.olivercoding.com/2018-12-14-jaeger-csharp/) - [OpenTracing and C#: part 2](https://www.olivercoding.com/2018-12-30-jaeger-csharp-2/) - [Getting started with OpenTelemetry and distributed tracing in .NET Core](https://www.mytechramblings.com/posts/getting-started-with-opentelemetry-and-dotnet-core/) - [Distributed Tracing with OpenTracing API of .NET Core Applications on Kubernetes](https://www.gokhan-gokalp.com/en/distributed-tracing-with-opentracing-api-of-net-core-applications-on-kubernetes/) - [How Distributed Tracing Solves One of the Worst Microservices Problems](https://petabridge.com/blog/why-use-distributed-tracing/) - [Why You Should be Paying Attention to OpenTracing](https://petabridge.com/blog/why-use-opentracing/) - [The Current State of OpenTelemetry in .NET](https://petabridge.com/blog/state-opentelemetry-dotnet/) - [Improvements in .NET Core 3.0 for troubleshooting and monitoring distributed apps](https://devblogs.microsoft.com/aspnet/improvements-in-net-core-3-0-for-troubleshooting-and-monitoring-distributed-apps/) - [ASP.NET Core Apps Observability](https://devblogs.microsoft.com/aspnet/observability-asp-net-core-apps/#adding-tracing-to-a-net-core-application) - [A Step by Step Guide to Logging in ASP.NET Core 5](https://www.ezzylearning.net/tutorial/a-step-by-step-guide-to-logging-in-asp-net-core-5) - [Diagnostics in .Net Core 3: Listening to outbound HTTP requests](https://im5tu.io/article/2020/06/diagnostics-in-.net-core-3-listening-to-outbound-http-requests/) - [Trace Context](https://www.w3.org/TR/trace-context) - [Propagation format for distributed trace context: Baggage](https://w3c.github.io/baggage/) - [Using Jaeger and OpenTelemetry SDKs in a mixed environment with W3C Trace-Context](https://medium.com/jaegertracing/jaeger-clients-and-w3c-trace-context-c2ce1b9dc390) - [Distributed Tracing In .NET](https://dashdevs.com/blog/quick-and-efficient-distributed-tracing-in.net/) - [Diagnostics Improvements in .NET Core 3.0](https://www.youtube.com/watch?v=fkjetdIdcyg) - [Distributed Tracing with gRPC and OpenTelemetry](https://blog.ladeak.net/posts/grpc-distributed-tracing) - [Introducing diagnostics improvements in .NET Core 3.0](https://devblogs.microsoft.com/dotnet/introducing-diagnostics-improvements-in-net-core-3-0/) - [Using the DiagnosticSource in .NET Core: Theory](https://sudonull.com/post/3671-Using-the-DiagnosticSource-in-NET-Core-Theory) - [Add SkyWalking + SkyApm-dotnet distributed link tracking system to the microservice framework Demo.MicroServer](https://www.programmersought.com/article/76773716203/) - [Asp.Net Core uses Skywalking to implement distributed link tracking](https://www.programmersought.com/article/64607508135/) - [ASP.NET Core Apps Observability](https://devblogs.microsoft.com/aspnet/observability-asp-net-core-apps/) - [OpenTelemetry in .NET](https://lightstep.com/blog/opentelemetry-net-all-you-need-to-know/) - [Increasing Trace Cardinality with Activity Tags and Baggage](https://jimmybogard.com/increasing-trace-cardinality-with-tags-and-baggage/) - [Monitoring a .NET application using OpenTelemetry](https://www.meziantou.net/monitoring-a-dotnet-application-using-opentelemetry.htm) - [What is the difference between Logging, Tracing & Profiling?](https://greeeg.com/issues/differences-between-logging-tracing-profiling) - [Fullstack app (workshop) with distributed tracing, logging and monitoring](https://dev.to/damikun/fullstack-app-workshop-with-distributed-tracing-and-monitoring-3i45) - [OpenTelemetry in .NET](https://rafaelldi.blog/posts/open-telemetry-in-dotnet/) - [Distributed tracing for messaging application](https://rafaelldi.blog/posts/distributed-tracing-for-messaging-application/) - [Distributed application with Project Tye](https://rafaelldi.blog/posts/distributed-application-with-project-tye/) - [Tracing for messaging application](https://rafaelldi.blog/posts/tracing-for-messaging-application/) - [Optimally Configuring Open Telemetry Tracing for ASP.NET Core](https://rehansaeed.com/optimally-configuring-open-telemetry-tracing-for-asp-net-core/) - [OpenTelemetry in Action: Optimizing Database Operations](https://thecloudblog.net/post/opentelemetry-in-action-optimizing-database-operations/) - [OpenTelemetry in Action: Identifying Database Dependencies](https://thecloudblog.net/post/opentelemetry-in-action-identifying-database-dependencies/) - [Just-in-Time Nomad: Running the OpenTelemetry Collector on Hashicorp Nomad with HashiQube](https://storiesfromtheherd.com/just-in-time-nomad-running-the-opentelemetry-collector-on-hashicorp-nomad-with-hashiqube-4eaf009b8382) - [How to setup OpenTelemetry instrumentation in ASP.NET core](https://dev.to/jmourtada/how-to-setup-opentelemetry-instrumentation-in-aspnet-core-23p5) - [What is OpenTelemetry?](https://lightstep.com/opentelemetry/about) - [Getting started with OpenTelemetry Metrics in .NET. Part 1: Key concepts](https://www.mytechramblings.com/posts/getting-started-with-opentelemetry-metrics-and-dotnet-part-1/) ⭐ - [Getting started with OpenTelemetry Metrics in .NET. Part 2: Instrumenting the BookStore API](https://www.mytechramblings.com/posts/getting-started-with-opentelemetry-metrics-and-dotnet-part-2/) ⭐ - [OpenTelemetry Distributed Tracing](https://uptrace.dev/opentelemetry/distributed-tracing.html) - [OpenTelemetry Tracing API for .NET](https://uptrace.dev/opentelemetry/dotnet-tracing.html) - [Set up OpenTelemetry with Event Sourcing and Marten](https://event-driven.io/en/set_up_opentelemetry_wtih_event_sourcing_and_marten/) - [Automatic Instrumentation of Containerized .NET Applications With OpenTelemetry](https://www.twilio.com/blog/automatic-instrumentation-of-containerized-dotnet-applications-with-opentelemetry) ⭐ - [Instrumenting .NET Apps with OpenTelemetry](https://www.thorsten-hans.com/instrumenting-dotnet-apps-with-opentelemetry/) - [Observability with Grafana Cloud and OpenTelemetry in .net microservices](https://dev.to/dbolotov/observability-with-grafana-cloud-and-opentelemetry-in-net-microservices-448c) ⭐ - [Observing .NET microservices with OpenTelemetry - logs, traces and metrics](https://blog.codingmilitia.com/2023/09/05/observing-dotnet-microservices-with-opentelemetry-logs-traces-metrics/) ⭐ - [Supporting Jaeger with native OTLP](https://deploy-preview-1892--opentelemetry.netlify.app/blog/2022/jaeger-native-otlp/) - [OTLP Specification 1.0.0](https://opentelemetry.io/docs/specs/otlp/) - [Introducing native support for OpenTelemetry in Jaeger](https://medium.com/jaegertracing/introducing-native-support-for-opentelemetry-in-jaeger-eb661be8183c) - [.NET Aspire dashboard is the best tool to visualize your OpenTelemetry data during local development](https://anthonysimmon.com/dotnet-aspire-dashboard-best-tool-visualize-opentelemetry-local-dev/) - [Trace Propagation and Public API Endpoints in .NET – Part 1 (Disable All)](https://martinjt.me/2023/07/07/trace-propagation-and-public-api-endpoints-in-net-part-1-disable-all/) - [Where are my traces? (weird .NET meets OpenTelemetry gotcha)](https://blog.codingmilitia.com/2024/05/13/where-are-my-traces-weird-dotnet-meets-opentelemetry-gotcha/) - [Monitoring Unit Tests with OpenTelemetry in .NET](https://www.honeycomb.io/blog/monitoring-unit-tests-opentelemetry) - [Automated Tests instrumentation via OpenTelemetry and Aspire Dashboard](https://nikiforovall.github.io/dotnet/opentelemtry/2024/06/07/test-instrumentation-with-otel-aspire.html) - [A Beginner's Guide to the OpenTelemetry Collector](https://betterstack.com/community/guides/observability/opentelemetry-collector/) ⭐ ## πŸ“Ί Videos - [Jimmy Bogard - Distributed Tracing Made Easy with .NET Core and OpenTelemetry](https://www.youtube.com/watch?v=s9UNr1oEMl4) - [On .NET Live - Cloud Native Patterns for .NET Developers](https://www.youtube.com/watch?v=PDdHa0ushJ0) - [Distributed Tracing Made Easy with .NET Core - Jimmy Bogard](https://www.youtube.com/watch?v=kfyCHtqk-Ts) - [Distributed Tracing Made Easy with .NET 5, with Jimmy Bogard](https://www.youtube.com/watch?v=N0r5NSY3ZIQ) - [Distributed Tracing with .NET 5](https://www.youtube.com/watch?v=cgfIX9Y7AsQ) - [ASP.NET Core Series: Tracing](https://www.youtube.com/watch?v=G_C1RGOYZk8) - [Distributed Tracing with Jaeger [Microservices .NET]](https://www.youtube.com/watch?v=toXFRBtv4fg) - [Application Diagnostics in .NET Core 3.1 - Damian Edwards & David Fowler](https://www.youtube.com/watch?v=p6CjlnwPhHQ) - [DiagnosticSource and Activity, Tracing in .NET Part 1 - .NET Concept of the Week - Episode 18](https://www.youtube.com/watch?v=y52l8XR3XK4) - [Tracing with Jaeger and Kubernetes](https://www.youtube.com/watch?v=FikF0DtxZno) - [Exploring distributed tracing with ASP NET Core 6](https://www.youtube.com/watch?v=l1_i8p2hVlE) - [OpenTelemetry with Minimal APIs in .NET 6](https://www.youtube.com/watch?v=djLCqEzf72o) - [OpenTelemetry will save your day and night - Alexey Zimarev - NDC Oslo 2021](https://www.youtube.com/watch?v=pz4bNmlss3w) - [OpenMetrics, OpenTracing, OpenTelemetry - are we there yet? - Alexey Zimarev - NDC Oslo 2020](https://www.youtube.com/watch?v=0vl-4OhPyQY) - [MassTransit v8 - Open Telemetry](https://www.youtube.com/watch?v=WsTYClGrOVI) - [.NET Diagnostics for Applications: Best Practices](https://www.pluralsight.com/courses/dot-net-diagnostics-applications-best-practices) - [Distributed Tracing in .NET 6 using OpenTelemetry - Martin Thwaites - NDC Copenhagen 2022](https://www.youtube.com/watch?v=3JnMfJM9K0c) - [Cloud-native development with .NET 8 | Microsoft Build 2023](https://www.youtube.com/watch?v=hz9d3AcZKqQ) - [Practical OpenTelemetry for .NET - Martin Thwaites - NDC Oslo 2023](https://www.youtube.com/watch?v=c4AJlZeX2fE) - [Getting started with the OpenTelemetry Collector](https://www.youtube.com/watch?v=EeU-k659lpw) ## πŸ“¦ Libraries - [SkyAPM/SkyAPM-dotnet](https://github.com/SkyAPM/SkyAPM-dotnet) - The .NET/.NET Core instrument agent for Apache SkyWalking - [opentracing-contrib/csharp-netcore](https://github.com/opentracing-contrib/csharp-netcore) - OpenTracing instrumentation for .NET Core & .NET 5 apps - [jaegertracing/jaeger-client-csharp](https://github.com/jaegertracing/jaeger-client-csharp) - C# client (tracer) for Jaeger - [open-telemetry/opentelemetry-dotnet](https://github.com/open-telemetry/opentelemetry-dotnet) - The OpenTelemetry .NET Client - [SkyAPM/SkyAPM-dotnet](https://github.com/SkyAPM/SkyAPM-dotnet) - The .NET/.NET Core instrument agent for Apache SkyWalking - [jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources](https://github.com/jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources) - extends the core MongoDB C# driver to expose telemetry information via System.Diagnostics. - [jbogard/NServiceBus.Extensions.Diagnostics.OpenTelemetry](https://github.com/jbogard/NServiceBus.Extensions.Diagnostics.OpenTelemetry) - [jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources](https://github.com/jbogard/MongoDB.Driver.Core.Extensions.DiagnosticSources) - [open-telemetry/opentelemetry-dotnet-contrib](https://github.com/open-telemetry/opentelemetry-dotnet-contrib) - This repository contains set of components extending functionality of the OpenTelemetry .NET SDK. Instrumentation libraries, exporters, and other components can find their home here. - [open-telemetry/opentelemetry-dotnet/OpenTelemetry.Exporter.InMemory](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/src/OpenTelemetry.Exporter.InMemory) - The in-memory exporter stores data in a user provided memory buffer. - [alexvaluyskiy/prometheus-net-contrib](https://github.com/alexvaluyskiy/prometheus-net-contrib) - Exposes .NET core diagnostic listeners and counters - [open-telemetry/opentelemetry-collector-contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) - Contrib repository for the OpenTelemetry Collector - [open-telemetry/opentelemetry-collector/](https://github.com/open-telemetry/opentelemetry-collector/) - OpenTelemetry Collector - [grafana/grafana-opentelemetry-dotnet](https://github.com/grafana/grafana-opentelemetry-dotnet) - Grafana's distribution of OpenTelemetry instrumentation for .NET ## πŸš€ Samples - [karlospn/opentelemetry-tracing-demo](https://github.com/karlospn/opentelemetry-tracing-demo) - Example about how to use OpenTelemetry for tracing when we have a series of distributed applications communicating between them - [jbogard/nsb-diagnostics-poc](https://github.com/jbogard/nsb-diagnostics-poc) - [open-telemetry/opentelemetry-dotnet/examples](https://github.com/open-telemetry/opentelemetry-dotnet/tree/main/examples) - [damikun/trouble-training](https://github.com/damikun/trouble-training) - FullStack app workshop with distributed tracing and monitoring. This shows the configuration from React frontend to .NetCore backend. - [andreatosato/Photobook](https://github.com/andreatosato/Photobook) - [rafaelldi/open-telemetry-in-dotnet](https://github.com/rafaelldi/open-telemetry-in-dotnet) - Sample project for the article about OpenTelemetry in .NET - [rafaelldi/distributed-tracing-for-messaging](https://github.com/rafaelldi/distributed-tracing-for-messaging) - Sample project for the article about distributed tracing in messaging application - [thangchung/practical-opentelemetry](https://github.com/thangchung/practical-opentelemetry) - Make OpenTelemetry works on .NET Core with features such as tracing, logs and metrics on multiple protocols like HTTP/gRPC/UDP/TCP... - [jbogard/presentations/DistributedTracing](https://github.com/jbogard/presentations/tree/master/DistributedTracing) - [james-world/oxford-otel-demo](https://github.com/james-world/oxford-otel-demo) - [hashicorp/nomad-open-telemetry-getting-started](https://github.com/hashicorp/nomad-open-telemetry-getting-started) - OpenTelemetry getting started guides on Nomad - [open-telemetry/opentelemetry-collector-contrib/nomad](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/nomad) - [open-telemetry/opentelemetry-collector-contrib/examples/demo](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/demo) - [joaofbantunes/ExploringDistributedTracingWithAspNet](https://github.com/joaofbantunes/ExploringDistributedTracingWithAspNet) - [davidfowl/TodoApi](https://github.com/davidfowl/TodoApi/blob/afdc367fadcfd979bb85dd73e5f48cf896ca0f1a/TodoApi/OpenTelemetryExtensions.cs#L11) - [oskardudycz/EventSourcing.NetCore](https://github.com/oskardudycz/EventSourcing.NetCore/pull/181) - [Eventuous/eventuous](https://github.com/Eventuous/eventuous) - [kimcuhoang/practical-net-otelcollector](https://github.com/kimcuhoang/practical-net-otelcollector) ⭐ - Practical .NET Observability with OpenTelemetry Collector - [cecilphillip/grafana-otel-dotnet](https://github.com/cecilphillip/grafana-otel-dotnet) ⭐ - Sample setup showing ASP.NET Core observability with Prometheus, Loki, Grafana, Opentelemetry Collector - [bradygaster/dotnet-cloud-native-build-2023](https://github.com/bradygaster/dotnet-cloud-native-build-2023) - [bravecobra/emojivoto-dotnet](https://github.com/bravecobra/emojivoto-dotnet) - [davidfowl/OtlpDemo](https://github.com/davidfowl/OtlpDemo) ⭐ - [JamesNK/aspnetcore-grafana](https://github.com/JamesNK/aspnetcore-grafana) - Grafana dashboards for ASP.NET Core metrics - [joaofbantunes/DotNetMicroservicesObservabilitySample](https://github.com/joaofbantunes/DotNetMicroservicesObservabilitySample) - Sample application looking into observability of .NET microservices, using popular tools and technologies like OpenTelemetry, Prometheus, Grafana and (potentially) others - [open-telemetry/opentelemetry-demo](https://github.com/open-telemetry/opentelemetry-demo) ⭐ - This repository contains the OpenTelemetry Astronomy Shop, a microservice-based distributed system intended to illustrate the implementation of OpenTelemetry in a near real-world environment. - [open-telemetry/opentelemetry-collector-contrib/examples/demo](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/demo)