OpenTelemetry

What is OpenTelemetry?

From the Microsoft blog

“OpenTelemetry is created as a merger of the OpenCensus and OpenTracing projects. This project aspires to make robust, portable telemetry a built-in feature of any software. It allows you to collect low-overhead telemetry from the entirety of a modern software stack.”

I originally saw mention of OpenTelemetry on the ASP.Net core blog and then this month Jimmy Bogard started twitting about a project he was playing with, some of which he has blogged and appears to be an on going series. This got me interested in having another look at it.

What does it offer us

In short OpenTelemery allows us a consistent way of adding end-to-end diagnostics and tracing to an application, extracting away the system we are using to visualise this information. Currently there is a Alpha library for .Net https://github.com/open-telemetry/opentelemetry-dotnet which should be moving to beta shortly.

I don’t have a full example, I’ll leave that up to Jimmy as he will do a much better job, but I have some highlights below.

To configure OprnTelemetry for NewRelic we would configure it like this

1
2
3
4
5
6
7
8
services.AddOpenTelemetry((sp, builder) =>
{
builder
//.SetSampler(Samplers.AlwaysSample)
.UseNewRelic(this.Configuration)
.AddRequestCollector()
.AddDependencyCollector();
});

NewRelic have their own library for OpenTelemetry.

AWS are starting to look at OpenTelemetry for XRay as well, but only Java so far :sad:.

Wrap up

I feel this is something that is worth keeping an eye on. It seems to have good support from vendors and is supported by the Cloud Native Computing Foundation.

If we had this when we switched from DataDog the migration would have been as simple as changing .UseDataDog to .UseNewRelic.