Phase 1: Wire up OpenTelemetry in Budget.Api
Adds OTel packages (Extensions.Hosting, Instrumentation.AspNetCore/Http/EFCore, Exporter.OTLP) and configures logging + tracing in Program.cs. Endpoint is intentionally left unset in code — read from OTEL_EXPORTER_OTLP_ENDPOINT at runtime. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,11 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="10.0.7" />
|
<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="10.0.7" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.15.1-beta.1" />
|
||||||
|
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.15.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -10,9 +10,27 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
using Microsoft.Extensions.Diagnostics.HealthChecks;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
using OpenTelemetry.Resources;
|
||||||
|
using OpenTelemetry.Trace;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
|
builder.Logging.AddOpenTelemetry(logging =>
|
||||||
|
{
|
||||||
|
logging.IncludeFormattedMessage = true;
|
||||||
|
logging.IncludeScopes = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
builder.Services.AddOpenTelemetry()
|
||||||
|
.ConfigureResource(resource => resource
|
||||||
|
.AddService(serviceName: "budget", serviceVersion: "1.0.0"))
|
||||||
|
.WithLogging()
|
||||||
|
.WithTracing(tracing => tracing
|
||||||
|
.AddAspNetCoreInstrumentation()
|
||||||
|
.AddHttpClientInstrumentation()
|
||||||
|
.AddEntityFrameworkCoreInstrumentation()
|
||||||
|
.AddOtlpExporter());
|
||||||
|
|
||||||
var connStr = builder.Configuration.GetConnectionString("DefaultConnection")
|
var connStr = builder.Configuration.GetConnectionString("DefaultConnection")
|
||||||
?? $"Host={builder.Configuration["POSTGRES_HOST"] ?? "localhost"};" +
|
?? $"Host={builder.Configuration["POSTGRES_HOST"] ?? "localhost"};" +
|
||||||
$"Port={builder.Configuration["POSTGRES_PORT"] ?? "5432"};" +
|
$"Port={builder.Configuration["POSTGRES_PORT"] ?? "5432"};" +
|
||||||
|
|||||||
Reference in New Issue
Block a user