Skip to main content
İzleme tarafı iki ayrı pakete bölünür:
  • BuildingBlocks.Monitoring.Prometheusprometheus-net tabanlı, basit HTTP metrik toplama ve /metrics endpoint’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.

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.

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. 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:
Bu, K8s readiness probe için kullanılan /health/ready endpoint’inden bağımsız çalışır (biri probe, diğeri metrik). Grafana alarm örneği:

Konfigürasyon

/metrics dış dünyaya açık olmamalı — internal port veya ingress allowlist arkasında olmalı. Public exposure cardinality bombardımanı ve internal endpoint enumeration riski taşır (ör. location /metrics { allow 10.0.0.0/8; deny all; }).
Müşteri matrisi: Prometheus/Grafana yoksa Enabled=false (tek satırla komple kapalı, BuildingBlocks.HealthChecks yeter). Standart prod: Enabled=true, Tracing=false. SRE ekibi: Tracing=true.

İ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ı.