İ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.
| Sinyal | Sorduğu soru | Örnek |
|---|---|---|
| Log | Ne oldu? | "Ödeme reddedildi, kod 51" |
| Metrik | Ne kadar, ne sıklıkla? | Hata oranı %3'e çıktı |
| İz | Nerede 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.