If you are a professional software developer, chances are that you have heard mention of OpenTelemetry over the last year or so.
I have certainly seen it pop up on a few blogs recently, so I thought that it would be a good idea to take a closer look.
Whilst the clue is somewhat in the name, OpenTelemetry is more precisely a suite of tools and standards which together allow you to instrument your apps for observability telemetry in a vendor and platform agnostic way.
The benefits of this are clear. A great deal of modern software systems, probably the majority, span multiple platforms and technologies. This includes the client / server split in web applications, as well as the many APIs and other background services which often support our core deployments.
If each of these use different tools and technologies, it is difficult or impossible to trace behaviour and record metrics in an end-to-end manner. By defining a set of common APIs and data formats, OpenTelemetry allows vendors to create client SDKs which you can use to export data to their services.
In addition, library authors can build instrumentation SDKs which automatically collect and export observability data from their software.
In the world of .NET there are already packages which do just that for ASP.NET Core, SQLClient and HttpClient among others.
OpenTelemetry Collector
In order to centralise the ingestion and pre-processing of this data, there is a tool called the OpenTelemetry Collector.
This is the de-facto place to send your observability data. Once received, it can be pipelined through processors which perform tasks such as such as filtering and batching, before being exported to the service/s of your choice.
Service Integrations
There are already lots of great tools and libraries out there which support OpenTelemetry. These include exporters for service providers such as Azure, AWS and New Relic as well as popular open source tools for distributed tracing and metrics Zipkin, Jaeger, and Prometheus.
Conclusion
Hopefully you can see why people are excited about a future where OpenTelemetry is supported out of the box by all the major service providers, and that this article has gone some way towards explaining what it is all about.
In my next blog, I will show how we can get up and running with the OpenTelemetry .NET SDK using the preview Azure Monitor Exporter with ASP.NET and the SAFE Stack template as a starting point.