(Sistem Gözlemlenebilirliği)
Tanım: Observability, uygulamaların canlı ortamda bile iç durumlarını dışa vuran veriler üreterek izlenebilmesini sağlayan bir yaklaşımdır. Aynı zamanda bir sistemin iç durumunu dış gözlemlerle anlama yeteneğini ifade eder ve dağıtık sistemlerde sistemin performansını izlemek ve hataları tespit etmek için kullanılır.
Neden Önemli?: IDE’de lokal olarak debug yapmak kolay. Ancak canlıda bir sorun yaşandığında sistemi gözlemleyebilmek için bazı verileri aktif olarak toplamamız gerekir.
Log:
Sistemde meydana gelen olayların kaydıdır ve detaylı analiz yapma imkanı sunar.
Uygulamanın zaman bilgisini (timestamp), mesajı, sınıf/metot bilgilerini ve formatlanmış metinleri içerir.
Her yere log atmak sakıncalı olabilir, çünkü sistemde yük oluşturabilir.
Metrics:
Yükü en hafif olan, sistem performansını gösteren sayısal veriler sağlar. (ör. CPU kullanımı, kuyruktaki istek sayısı, hata sayısı).
Uygulamadan veya container/servis mesh gibi katmanlardan toplanabilir.
Tracing:
İşlemlerin dağıtık sistemlerde nasıl ilerlediğini izler. Özellikle mikroservisler arası isteklerin nasıl geçtiğini takip eder.
Trace Data: Başlangıçtan bitişine kadar bir operasyonu (transaction) uçtan uca izlemek için oluşturulur (Bu veride hangi işlemle devam etti, işlem ne kadar sürdü gibi veriler vardır.).
Geniş çaplı (ör. bir HTTP request’in veritabanı işlemlerine kadar takibi) süreçlerde gereklidir.
Her yerde trace tutmak da kaynak tüketimini artırır; ihtiyaca göre konumlandırılmalıdır.
Hata Ayıklama: Performans ve hataların gerçek zamanlı izlenmesi.
Proaktif İzleme: Sorunları önceden tespit etme ve çözüm üretme.
Sistem Kararlılığı: Daha dayanıklı ve performanslı sistemler için kritik.
Open açık kaynak olmasını, Tele uzaktan yapabilmesini ve Metry (Metron) ölçümü temsil eder. Bir gözlemlenebilirlik (observability) framework’üdür
Log, trace ve metrics verilerini platform bağımsız, standart bir formatta üreterek istenilen hedefe aktarabilmeyi sağlar.
Her dilin kütüphanesi farklı veri formatları oluşturabilirken, OpenTelemetry bu verileri tek bir standarda oturtur.
CNCF (Cloud Native Computing Foundation) tarafından desteklenir ve APM araçlarından bağımsız çalışır.
OTLP protokolü sayesinde endüstri standartlarında veri toplayabilir.
Jaeger ve Zipkin gibi araçlarla uyumlu çalışarak kapsamlı bir gözlemlenebilirlik çözümü sunar.
Jaeger ve Zipkin: Özellikle tracing için kullanılan açık kaynaklı platformlardır. OpenTelemetry’le uyumludurlar.
Jaeger: Cassandra ve Elasticsearch gibi veri depolarını destekler.
Zipkin: Tracing tarafında yine popüler açık kaynak bir çözümdür.
Özellikle bu iki araç log verisi istemezler; daha çok trace odaklı çalışırlar.
Bir trace, uygulamanın farklı katmanları veya bileşenleri arasındaki etkileşimleri ayrıntılı bir şekilde gösterir. Örneğin:
Bu veriler, tek bir zincir (trace) üzerinde segmentler (span) şeklinde toplanır ve böylelikle uçtan uca bir görünürlük elde etmenizi sağlar.