Skip to content

Commit 088557e

Browse files
Simplified the Asp.NET Core OpenTelemetry sample (#3142)
1 parent b7644eb commit 088557e

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

samples/Sentry.Samples.OpenTelemetry.AspNetCore/Program.cs

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,20 @@
1111
// OpenTelemetry Configuration
1212
// See https://opentelemetry.io/docs/instrumentation/net/getting-started/
1313
builder.Services.AddOpenTelemetry()
14+
// This block configures OpenTelemetry to send traces to Sentry
15+
.WithTracing(tracerProviderBuilder =>
16+
tracerProviderBuilder
17+
// Here we add a custom source we've created, which sends telemetry in the `LookupUser` method below
18+
.AddSampleInstrumentation()
19+
// Here we can optionally configure resource attributes that get sent with every trace
20+
.ConfigureResource(resource => resource.AddService(SampleTelemetry.ServiceName))
21+
// The two lines below take care of configuring sources for ASP.NET Core and HttpClient
22+
.AddAspNetCoreInstrumentation()
23+
.AddHttpClientInstrumentation()
24+
// Finally we configure OpenTelemetry to send traces to Sentry
25+
.AddSentry()
26+
)
27+
// This block configures OpenTelemetry metrics that we care about... later we'll configure Sentry to capture these
1428
.WithMetrics(metrics =>
1529
{
1630
metrics
@@ -20,28 +34,26 @@
2034
"Microsoft.AspNetCore.Hosting",
2135
"Microsoft.AspNetCore.Server.Kestrel",
2236
"System.Net.Http");
23-
})
24-
.WithTracing(tracerProviderBuilder =>
25-
tracerProviderBuilder
26-
.AddSource(Telemetry.ActivitySource.Name)
27-
.ConfigureResource(resource => resource.AddService(Telemetry.ServiceName))
28-
.AddAspNetCoreInstrumentation()
29-
.AddHttpClientInstrumentation()
30-
.AddSentry() // <-- Configure OpenTelemetry to send traces to Sentry
31-
);
37+
});
3238

3339
builder.WebHost.UseSentry(options =>
3440
{
3541
// options.Dsn = "...Your DSN...";
3642
options.Debug = builder.Environment.IsDevelopment();
3743
options.SendDefaultPii = true;
3844
options.TracesSampleRate = 1.0;
45+
options.UseOpenTelemetry(); // <-- Configure Sentry to use OpenTelemetry trace information
3946
// This shows experimental support for capturing OpenTelemetry metrics with Sentry
4047
options.ExperimentalMetrics = new ExperimentalMetricsOptions()
4148
{
49+
// Here we're telling Sentry to capture all built-in metrics. This includes all the metrics we configured
50+
// OpenTelemetry to emit when we called `builder.Services.AddOpenTelemetry()` above:
51+
// - "OpenTelemetry.Instrumentation.Runtime"
52+
// - "Microsoft.AspNetCore.Hosting",
53+
// - "Microsoft.AspNetCore.Server.Kestrel",
54+
// - "System.Net.Http"
4255
CaptureSystemDiagnosticsMeters = BuiltInSystemDiagnosticsMeters.All
4356
};
44-
options.UseOpenTelemetry(); // <-- Configure Sentry to use OpenTelemetry trace information
4557
});
4658

4759
builder.Services
@@ -85,7 +97,7 @@
8597

8698
static string LookupUser(HttpRequest request)
8799
{
88-
using var _ = Telemetry.ActivitySource.StartActivity(nameof(LookupUser));
100+
using var _ = SampleTelemetry.ActivitySource.StartActivity(nameof(LookupUser));
89101
Thread.Sleep(100); // Simulate some work
90102
return (request.Query.TryGetValue("name", out var name))
91103
? name.ToString()
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
using System.Diagnostics;
2+
using OpenTelemetry.Trace;
23

34
namespace Sentry.Samples.OpenTelemetry.AspNetCore;
45

5-
public static class Telemetry
6+
public static class SampleTelemetry
67
{
78
public const string ServiceName = "Sentry.Samples.OpenTelemetry.AspNetCore";
89
public static ActivitySource ActivitySource { get; } = new(ServiceName);
10+
public static TracerProviderBuilder AddSampleInstrumentation(this TracerProviderBuilder builder)
11+
=> builder.AddSource(ServiceName);
912
}

0 commit comments

Comments
 (0)