.NET ve OpenTelemetry ile Uçtan Uca Gözlemlenebilirlik
Bir kullanıcının isteği API gateway, uygulama servisi, cache ve veritabanından geçiyorsa yalnızca tek sunucunun loguna bakmak yeterli değildir. Gözlemlenebilirlik, sistemin iç durumunu dışarı verdiği trace, metric ve log sinyallerinden anlayabilme yeteneğidir. OpenTelemetry bu sinyalleri üretmek ve farklı izleme sağlayıcılarına taşımak için vendor bağımsız standart sunar.
Üç sinyalin farklı görevi
Metric sistemin ne kadar sık ve ne ölçüde sorun yaşadığını gösterir; örneğin hata oranı ve p95 gecikmesi. Trace tek bir isteğin servisler arasındaki yolculuğunu ve zaman dağılımını açıklar. Log ise belirli olayın ayrıntısını taşır. TraceId ve SpanId loglara eklendiğinde alarmdan problemli isteğe, oradan ilgili log satırına geçmek mümkün olur.
ASP.NET Core yapılandırması
Aşağıdaki temel yapılandırma HTTP girişlerini, HttpClient çağrılarını ve EF Core aktivitelerini izler. Exporter seçimi ortama göre OTLP collector, konsol veya başka bir backend olabilir.
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddEntityFrameworkCoreInstrumentation()
.AddOtlpExporter())
.WithMetrics(metrics => metrics
.AddAspNetCoreInstrumentation()
.AddRuntimeInstrumentation()
.AddOtlpExporter());Her span'e müşteri e-postası veya ham sorgu gibi yüksek cardinality ve hassas veri eklemekten kaçının. Bunun yerine endpoint adı, sonuç durumu, bağımlılık türü ve güvenli iş kimlikleri kullanın. Sampling oranını trafik hacmine göre ayarlayın; hatalı ve yavaş izlerin korunmasını önceliklendirin.
Uygulama adımları
- Önce kullanıcı açısından önemli SLI değerlerini belirleyin: kullanılabilirlik, hata oranı ve gecikme gibi.
- Servis adlarını ve environment bilgisini ortak resource attribute olarak tanımlayın.
- HTTP, veritabanı ve mesajlaşma instrumentation paketlerini kontrollü biçimde ekleyin.
- TraceId bilgisini structured log alanlarına dahil edin.
- Dashboard ve alarm eşiklerini gerçek baseline verisine göre oluşturun.
Kaçınılması gerekenler
- Her isteği yüzde yüz örnekleyip telemetry maliyetini kontrolsüz büyütmek.
- Kişisel veri veya token değerlerini span attribute olarak göndermek.
- Çok sayıda grafik üretip kullanıcı etkisini gösteren az sayıda güvenilir alarm tanımlamamak.
Sonuç
OpenTelemetry tek başına gözlemlenebilirlik sağlamaz; doğru sinyal, güvenli attribute ve anlamlı alarm tasarımı gerekir. Önce kritik bir kullanıcı akışını uçtan uca izleyin, ardından kapsama alanını genişletin. Amaç daha fazla veri toplamak değil, bir production sorusuna daha hızlı ve kanıtla cevap verebilmektir.
0 Yorumlar