BuildingBlocks.Monitoring.Prometheus—prometheus-nettabanlı, basit HTTP metrik toplama ve/metricsendpoint’i.BuildingBlocks.Observability— OpenTelemetry tabanlı tam pipeline: metrics + tracing, instrumentation flag’leri, health-check → Prometheus gauge köprüsü ve master kill-switch.
Prometheus/Grafana/Seq yığınının operasyonel kurulumu için bkz. Observability.
BuildingBlocks.Monitoring.Prometheus
prometheus-net.AspNetCore üzerine üç extension.
| Metot | Tip | Etki |
|---|---|---|
AddPrometheusMonitoring() | IServiceCollection | UseHttpClientMetrics() — giden HTTP metrikleri |
UsePrometheusMonitoring() | IApplicationBuilder | UseHttpMetrics() — gelen HTTP metrik middleware’i |
MapPrometheusMonitoring() | IEndpointRouteBuilder | MapMetrics() — /metrics endpoint’i |
BuildingBlocks.Observability
OTel pipeline’ını tek çağrıyla kurar:AddDiyanetObservability(configuration). Observability:Enabled = false ise hiçbir şey register edilmez (early-return) — paket “yokmuş gibi” davranır, sıfır maliyet.
| Metot | Tip | Etki |
|---|---|---|
AddDiyanetObservability(configuration) | IServiceCollection | Resource attribute’ları + metrics/tracing + health publisher |
MapDiyanetObservabilityEndpoints() | IEndpointRouteBuilder | Metrics.Endpoint (default /metrics) Prometheus scrape |
ObservabilityOptions
Observability bölümüne bind edilir. Üç label (Project, Service, environment) merkezi Grafana’da çoklu projeyi tek template ile yönetmek için kontrattır.
| Üye | Varsayılan | Açıklama |
|---|---|---|
Enabled | false | Master kill-switch. false → hiçbir OTel kaydı yok |
Project | "unknown" | Grafana label project |
Service | "api" | Grafana label service |
Metrics | — | MetricsOptions alt bloğu |
Tracing | — | TracingOptions alt bloğu (default kapalı) |
HealthChecksAsMetrics | true | /health/ready sonuçlarını gauge’a yayınla |
MetricsOptions: Enabled (true), Endpoint (/metrics), AspNetCore (true), HttpClient (true), Runtime (true), EfCore (false — cardinality riski), Redis (false).
TracingOptions: Enabled (false), SampleRatio (0.1), OtlpEndpoint (http://localhost:4317).
Instrumentation flag’leri
AddDiyanetObservability her instrumentation’ı yalnızca ilgili flag açıksa ekler:
Health-check → gauge köprüsü
HealthChecksAsMetrics = true iken HealthCheckMetricsPublisher (IHealthCheckPublisher) kaydedilir. ASP.NET sağlık altyapısı bunu periyodik tetikler (5 sn delay, 30 sn period); her sonuç bir ObservableGauge’a yazılır ve Prometheus scrape ile okunur:
/health/ready endpoint’inden bağımsız çalışır (biri probe, diğeri metrik). Grafana alarm örneği:
Konfigürasyon
İlgili
Observability
Prometheus + Grafana + Tempo yığını.
Logging
Serilog + Seq structured logging.
Operasyon
Docker ve ortam yönetimi.
Env değişkenleri
OBSERVABILITY_* ve GRAFANA_* anahtarları.