OpenTelemetry
Its an Observability framework and toolkit designed to manage telemetry data that is traces, metrics, and logs.
It can be paired either #open source# tools like Aspire dashboard, Prometheus, and commercial ones like datadog.
Observability
Observability in software, is the potential to understand the internal state of a system by examining its telemetry data.
To make a system observable, it must be instrumented.
Why OpenTelemetry?
- You own the data that you generate which is essential today in AI.
- You need a single set of APIs and standards for all. These create the flexibility needed to create a modern application.
OpenTelemetry in ASP .NET
- Search for
OpenTelemetry.*
in your project. There are many nuget packages for open telemetry as seen below. - Add them to your project:
- Update your
Program.cs
file.
using OpenTelemetry.Resources;
using OpenTelemetry.Metrics;
using OpenTelemetry.Trace;
using OpenTelemetry.Logs;
using OpenTelemetry.Exporter;
var builder = WebApplication.CreateBuilder(args);
// code ommitted for brevity
builder.Services.AddOpenTelemetry()
.ConfigureResource(resource =>
resource.AddService(ApiConstants.ApiName))
.WithMetrics(metric =>
{
metric.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();
metric.AddOtlpExporter(options =>
{
options.Endpoint = new Uri("<url_to_export _to>");
});
})
.WithTracing(trace =>
{
trace.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();
trace.AddOtlpExporter(options =>
{
options.Endpoint = new Uri("<url_to_export _to>");
});
});
builder.Logging.AddOpenTelemetry(options =>
{
options.AddConsoleExporter()
.SetResourceBuilder(ResourceBuilder.CreateDefault()
.AddService(ApiConstants.ApiName));
options.AddOtlpExporter(options =>
{
options.Endpoint = new Uri("<url_to_export _to>");
});
});
Your application should be able to emit logs, traces and metrics.
Aspire dashboard
The open source standalone dashboard provides a great UI for viewing telemetry and can be used by any application.
To spin it up locally without auth, use this command
docker run --rm -it -d -p 18888:18888 -p 4317:18889 --name aspire-dashboard mcr.microsoft.com/dotnet/aspire-dashboard:9.0 -e DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS=true
For more .NET Aspire dashboard configuration
Feel free to leave question or a comment about this.
Star these wonderful projects to give them the platform they deserve:
Top comments (0)