Logging — Serilog → Seq
API logları Serilog ile yapılandırılır (appsettings.{Env}.json → Serilog) ve Console + File + Seq sink’lerine yazılır. UseSerilogRequestLoggingMiddleware() her HTTP isteğini loglar; health/metrics/jobs path’leri filter ile dışlanır (gürültüyü azaltmak için).
| Port | Açıklama | |
|---|---|---|
| Seq ingest | 5341 | Serilog bu adrese log gönderir (Serilog:WriteTo[].serverUrl) |
| Seq UI | 5342 | Log arama/dashboard arayüzü |
| Docker iç | seq:80 | API container’dan ingest |
SEQ_NO_AUTH=true). Stage/prod’da SEQ_ADMIN_PASSWORD ile korunur.
Metrics & Tracing — OpenTelemetry
OpenTelemetry,builder.Services.AddDiyanetObservability(...) ile kaydedilir (BuildingBlocks.Observability). Master flag Observability:Enabled’dır:
Observability:Enabled = false ise hiçbir OTel paketi register edilmez (sıfır maliyet). Müşteri Prometheus stack’i kullanmıyorsa bu flag false yapılır; health check ve probe’lar bağımsız çalışmaya devam eder.Prometheus /metrics
app.MapDiyanetObservabilityEndpoints() Prometheus scrape endpoint’ini açar (default path /metrics). Observability:Enabled = false ise endpoint hiç açılmaz.
Grafana
docker/grafana/dashboards/diyanet-health.json’dır.
HealthCheckMetricsPublisher
HealthCheckMetricsPublisher (IHealthCheckPublisher) her health check sonucunu bir Prometheus gauge’e yazar:
diyanet_healthcheck_status{check="postgres"} == 0 → kritik alarm, avg_over_time(...[5m]) < 1.5 → flapping.
Health check endpoint’leri
app.MapHealthCheckEndpoints() (BuildingBlocks.HealthChecks) tag-bazlı endpoint’ler açar:
| Endpoint | İçerik |
|---|---|
/health/live | Liveness — predicate _ => false, hiçbir prob çalıştırmaz. DB down olsa bile 200 → pod restart olmaz |
/health/ready | Readiness — [Ready] tag’li prob’lar (DB / cache / broker / identity) |
/health/external | Opsiyonel dış servisler ([External]) — SMTP / SMS |
/health/startup | Startup prob’ları |
/health | Tam detay (hata mesajları dahil) |
/health’te yazılır; /health/live ve /health/ready compact (status + isim + süre + tag) döner.
Hangfire dashboard
Arka plan işler Hangfire ile yürütülür (PostgreSQL storage,hangfire şeması). Dashboard:
event-bus (event-queue, event-queue-dlx) ve command-bus (command-queue, command-queue-dlx) — MediatR IEventBus/ICommandBus köprüsünün altyapısı.
Sonraki adımlar
Dev Docker
Seq/Prometheus/Grafana container’ları.
Logging building block
Serilog yapılandırması.
Monitoring building block
OpenTelemetry detayları.
Komutlar
Log ve health kontrol komutları.