feature: Observability: Prometheus Metrics and Grafana

This commit is contained in:
voltsrage
2026-06-17 16:25:27 +08:00
parent 101040f9d9
commit df99bf3c91
22 changed files with 1462 additions and 132 deletions
+9 -1
View File
@@ -1,5 +1,6 @@
using Elastic.Clients.Elasticsearch;
using Microsoft.EntityFrameworkCore;
using Prometheus;
using Serilog;
using StackExchange.Redis;
using System.Text.Json.Serialization;
@@ -19,7 +20,9 @@ try
builder.Host.UseSerilog((ctx, services, config) =>
config.ReadFrom.Configuration(ctx.Configuration)
.ReadFrom.Services(services)
.Enrich.FromLogContext());
.Enrich.FromLogContext()
.Enrich.WithMachineName()
.Enrich.WithThreadId());
}
builder.Services.AddDbContext<AppDbContext>(opts =>
@@ -77,6 +80,10 @@ try
builder.Services.AddHostedService<EscalationWorkerService>();
builder.Services.AddHostedService<DischargeSummaryWorkerService>();
builder.Services.AddHostedService<ReconciliationScheduler>();
builder.Services.AddSingleton<ClinicalMetrics>();
builder.Services.AddHostedService<AlertsUnacknowledgedCollector>();
builder.Services.AddHostedService<OutboxPendingCollector>();
builder.Services.AddHostedService<KafkaConsumerLagCollector>();
builder.Services.AddControllers()
.AddJsonOptions(opts =>
@@ -118,6 +125,7 @@ try
app.UseSwaggerUI();
}
app.MapMetrics("/metrics");
app.MapControllers();
app.Run();