below is my sample code to setup tracing using OpenTelemetry:
public static class CustomTraces {
public static readonly ActivitySource Default = new ActivitySource("Service");
}
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services
.AddOpenTelemetry()
.ConfigureResource(builder => builder.AddService("My Service").Build()
)
.WithTracing(builder =>
{
builder
.AddHttpClientInstrumentation()
.AddAspNetCoreInstrumentation()
.AddSource(CustomTraces.Default.Name)
.AddJaegerExporter()
.AddConsoleExporter();
});
services.AddControllers();
}
// ...
}
[ApiController]
[Route("")]
public class PingController : ControllerBase
{
[HttpGet("ping")]
public Task<IActionResult> Ping()
{
using (var activity = CustomTraces.Default.StartActivity("BuildPingResult"))
{
// <---------------activity is null here, why
// ...
}
return Ok(
new { Status = "ok" }
);
}
}
I tried to create an Activity instance from the ActivitySource by calling var activity = CustomTraces.Default.StartActivity("BuildPingResult") inside the controller, but CustomTraces.Default.StartActivity("BuildPingResult") return null.
but I followed the OpenTelemetry guide to setup the project, where did I go wrong?