Furkan KapukayaYazılım geliştirme
Sunucu, Bulut ve DevOps3 dk okuma

Gözlemlenebilirlik (Observability): Log, Metrik ve İz ile Sistemi Anlamak

Gözlemlenebilirliğin üç temel sinyali olan log, metrik ve dağıtık izleme (trace); OpenTelemetry standardı, korelasyon kimliği, .NET uygulamalarında uygulanması ve doğru alarm kurma.

İzleme (monitoring) "sistem çalışıyor mu?" sorusunu cevaplar. Gözlemlenebilirlik ise daha zor bir soruya cevap arar: "Neden böyle davranıyor?" Kullanıcı "ödeme sayfası bazen çok yavaş" dediğinde, sorunun veritabanında mı, ödeme sağlayıcısında mı yoksa kodda mı olduğunu tahmin etmeden bulabilmektir.

Üç temel sinyal

Loglar

Belirli bir anda ne olduğunu anlatan kayıtlardır. Yapılandırılmış loglar (sabit metin yerine alanlar) aranabilir ve filtrelenebilir:

logger.LogInformation("Sipariş oluşturuldu {SiparisId} {Tutar}", siparis.Id, siparis.Tutar);

Ayrıntılı uygulama için bkz. .NET'te loglama.

Metrikler

Zaman içindeki sayısal ölçümlerdir: dakikadaki istek sayısı, hata oranı, yanıt süresi, kuyruk uzunluğu. Ucuzdur, uzun süre saklanabilir ve alarm kurmak için idealdir.

İzler (traces)

Tek bir isteğin sistem içindeki yolculuğunu adım adım gösterir: API'ye geldi, veritabanında 40 ms, kargo servisinde 900 ms, yanıt döndü. Birden çok servisin bulunduğu sistemlerde yavaşlığın kaynağını bulmanın en etkili yoludur.

SinyalSorduğu soruÖrnek
LogNe oldu?"Ödeme reddedildi, kod 51"
MetrikNe kadar, ne sıklıkla?Hata oranı %3'e çıktı
İzNerede zaman harcandı?Kargo API çağrısı 1,2 sn

Korelasyon kimliği

Bir isteğe ait tüm logların ortak bir kimlik taşıması, dağınık kayıtları birleştirmenin anahtarıdır. Kullanıcıya gösterilen hata mesajında bu kimliğin yer alması, destek sürecinde ilgili kayıtları saniyeler içinde bulmayı sağlar. Bkz. hata yönetimi.

OpenTelemetry

OpenTelemetry, log, metrik ve izleri toplamak için sağlayıcıdan bağımsız açık bir standarttır. Uygulamanızı bir kez enstrümante edersiniz; verileri istediğiniz araca gönderebilirsiniz. Bu, belirli bir izleme ürününe bağımlılığı azaltır.

.NET, OpenTelemetry ile birinci sınıf entegrasyona sahiptir. ASP.NET Core, HttpClient ve EF Core gibi bileşenler izleri otomatik üretir. Geliştirme ortamında bu verileri görselleştirmek için Aspire panosu oldukça pratiktir.

İyi alarmlar

Alarm kurarken nedenlere değil belirtilere odaklanın:

  • "İşlemci %80" yerine "ödeme isteklerinin %5'inden fazlası hata veriyor"
  • "Bellek yüksek" yerine "sayfa yanıt süresinin %95'lik dilimi 2 saniyeyi aştı"

Kullanıcıyı etkileyen durumlar için uyarı, diğerleri için pano yeterlidir. Temel erişilebilirlik izlemesi için bkz. uptime izleme.

Kişisel veriler ve loglar

Loglara parola, kart bilgisi, kimlik numarası gibi verilerin yazılmaması gerekir. Log saklama süresi belirlenmeli ve bu süre KVKK politikalarıyla uyumlu olmalıdır.

Sık sorulan sorular

Küçük bir uygulama için bu kadarı gerekli mi?

Yapılandırılmış loglar ve birkaç temel metrik her uygulama için faydalıdır. Dağıtık izleme, birden çok servis veya dış entegrasyon olduğunda değerini gösterir.

Log verisi çok yer kaplamaz mı?

Kaplar. Log seviyelerini doğru ayarlamak, gereksiz ayrıntıyı canlıda kapatmak ve saklama süresi belirlemek maliyeti kontrol altında tutar.

Sonuç

Gözlemlenebilirlik, sorunları tahminle değil veriyle çözmeyi sağlar. Log, metrik ve izleri ortak bir standartla toplamak; hatayı bulma süresini saatlerden dakikalara indirir.