Dayanıklılık ve gözlem
Yapılandırılmış log, korelasyon ve dağıtık izleme
Üretimde neler olduğunu görebilmek: loglar, metrikler ve izler.
Kavramı anlayalım
Gözlemlenebilirliğin üç temel sinyali vardır. Loglar tek tek olayları anlatır: ‘mesaj kaydedildi’, ‘giriş başarısız’. Metrikler zaman içindeki sayıları ölçer: saniyedeki istek, hata oranı, yanıt süresi yüzdelikleri. İzler (trace) tek bir isteğin bütün servisler boyunca yolculuğunu süreleriyle birlikte gösterir.
Loglar yapılandırılmış olmalıdır. ‘Kullanıcı 42 yazı 7’yi sildi’ gibi birleştirilmiş metin yerine şablon ve alanlar kullanılır: logger.LogInformation("User {UserId} deleted post {PostId}", userId, postId). Böylece log sistemi alanlara göre arama ve gruplama yapabilir. Seviyeler anlamlı seçilir: Information olağan olaylar, Warning beklenmedik ama tolere edilen durumlar, Error başarısız işlemler için.
Dağıtık bir sistemde aynı isteğin kayıtları farklı servislerde oluşur. W3C traceparent başlığı ve .NET’in Activity altyapısı, Next.js’ten API’ye ve veritabanına kadar aynı izleme kimliğini taşır. OpenTelemetry bu veriyi standart biçimde toplayıp bir izleme sistemine gönderir. Loglara asla parola, token veya kişisel veri yazılmaz.
Göremediğin bir sorunu düzeltemezsin; üretimde hata ayıklayıcı yoktur, yalnız sinyaller vardır.
String birleştirmeyle log yazmak veya istek gövdesini (parola dahil) olduğu gibi loglamak.
Aynı konu. Üç farklı derinlik.
// ✗ aranamaz metin
logger.LogInformation("Post " + id + " published by " + user);
// ✓ yapılandırılmış
logger.LogInformation("Post {PostId} published by {UserId}", id, userId);Şablon alanları log sisteminde ayrı ayrı sorgulanabilir.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Ortalama yanıt süresi 120 ms ama kullanıcılar ‘bazen çok yavaş’ diyor. Hangi metriğe bakarsın ve neden ortalama yanıltıcıdır?
Çözümü ve açıklamasını göster
p95 / p99 yanıt süresi (yüzdelikler).
Ör. p50 = 80 ms, p99 = 4.2 s → her 100 istekten biri 4 saniyeden uzun.
Ortalama, nadir ama çok yavaş istekleri gizler.Kullanıcı deneyimini en kötü durumlar belirler; yüzdelikler kuyruktaki yavaşlığı gösterir.