Moved DI extensions to Appl;ication layer

This commit is contained in:
2026-08-30 14:49:10 +02:00
parent f51b1feb4b
commit 0f7f875abe
12 changed files with 51 additions and 52 deletions
@@ -0,0 +1,58 @@
using OpenTelemetry.Exporter;
using OpenTelemetry.Logs;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using OpenTelemetry.Metrics;
namespace PostFundManagement.Application.Extensions;
public static class Otel
{
public static WebApplicationBuilder AddWebTelemetry(this WebApplicationBuilder builder)
{
var serviceName = builder.Configuration.GetValue<string>("Monitoring:ServiceName") ?? "Pfm";
var endpoint = builder.Configuration.GetValue<string>("Monitoring:Address")!;
var apiKey = builder.Configuration.GetValue<string>("Monitoring:ApiKey");
var resourceBuilder = ResourceBuilder.CreateDefault()
.AddService(serviceName);
var otlpHeaders = !string.IsNullOrEmpty(apiKey) ? $"x-otlp-api-key={apiKey}" : null;
builder.Logging.AddOpenTelemetry(logging =>
{
logging.SetResourceBuilder(resourceBuilder);
logging.AddOtlpExporter(opt =>
{
opt.Endpoint = new Uri(endpoint);
opt.Protocol = OtlpExportProtocol.Grpc;
opt.Headers = otlpHeaders;
});
});
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.SetResourceBuilder(resourceBuilder)
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddOtlpExporter(opt =>
{
opt.Endpoint = new Uri(endpoint);
opt.Protocol = OtlpExportProtocol.Grpc;
opt.Headers = otlpHeaders;
}))
.WithMetrics(metrics => metrics
.SetResourceBuilder(resourceBuilder)
.AddMeter(serviceName)
.AddAspNetCoreInstrumentation()
.AddRuntimeInstrumentation()
.AddOtlpExporter(opt =>
{
opt.Endpoint = new Uri(endpoint);
opt.Protocol = OtlpExportProtocol.Grpc;
opt.Headers = otlpHeaders;
}));
return builder;
}
}