İçeriğe geç
parazade

Gözlemlenebilirlik Nedir?

İngilizce: Observability

Yayın: · Son güncelleme:

Gözlemlenebilirlik Nedir? Kısaca

Gözlemlenebilirlik (observability), bir yazılım sisteminin ürettiği loglar, metrikler ve izler sayesinde içinde ne olup bittiğinin dışarıdan anlaşılabilmesidir. Önceden tahmin edilmemiş sorunların nedenini bulmayı kolaylaştırır.

Gözlemlenebilirlik nedir?
İçindekiler
  1. Gözlemlenebilirlik nedir?
  2. Hangi verilerle sağlanır?
  3. Nereden başlamalı?

Gözlemlenebilirlik nedir?

Gözlemlenebilirlik, bir sistemin dışa verdiği verilere bakarak iç durumunu anlayabilme yeteneğidir. Kavram kontrol teorisinden gelir ve yazılımda özellikle mikroservis mimarileriyle yaygınlaşmıştır. İngilizce karşılığı observability, kısaltması ise "o11y" şeklinde de yazılır.

Klasik izleme önceden bildiğiniz sorunları yakalar. Gözlemlenebilirlik ise hiç düşünmediğiniz bir hatanın nedenini araştırabilmenizi sağlar.

Hangi verilerle sağlanır?

Genellikle üç veri türünden söz edilir:

  • Log: Olayların zaman damgalı metin kayıtları
  • Metrik: CPU kullanımı, istek sayısı gibi sayısal ölçümler
  • İz (trace): Tek bir isteğin servisler arasında izlediği yol ve her adımda geçen süre

Bu verileri tek bir standartla toplamak için açık kaynak OpenTelemetry projesi yaygın biçimde kullanılır.

Varsayımsal bir örnek düşünelim. Bir yemek sipariş uygulamasında bazı kullanıcılar ödeme adımında 8 saniye bekliyor. Metrikler yalnızca "ödeme yavaş" der.

İz kaydı açıldığında isteğin sipariş, stok ve ödeme servislerinden geçtiği, gecikmenin ise stok servisinin dış bir API'yi beklemesinden kaynaklandığı görülüyor. Loglar da o API'nin zaman aşımı hatası verdiğini doğruluyor.

Nereden başlamalı?

Önce logları düz metin yerine yapılandırılmış biçimde, örneğin JSON olarak yazın ve her isteğe benzersiz bir kimlik ekleyin. Bu kimlik, farklı servislerdeki kayıtları birbirine bağlamanızı sağlar. Ardından en kritik kullanıcı akışı için iz toplamayı açın. Toplanan veri hacmi hızla büyüyebileceği için saklama süresi ve örnekleme oranı belirlemek maliyeti kontrol altında tutar.

Sıkça Sorulan Sorular

Gözlemlenebilirlik ile monitoring arasındaki fark nedir?

Monitoring önceden tanımlanmış metrikleri izleyip bilinen sorunlarda alarm verir. Gözlemlenebilirlik ise log, metrik ve izleri birlikte kullanarak beklenmedik bir sorunun nedenine inmenizi sağlar.

Küçük bir uygulama için gözlemlenebilirlik gerekli mi?

Tek sunuculu basit bir uygulamada düzgün loglama ve temel izleme çoğu zaman yeterlidir. Servis sayısı arttıkça iz toplamanın faydası belirginleşir.

İlgili terimler

MonitoringMonitoring (izleme), bir sistemin CPU, bellek, yanıt süresi, hata oranı gibi göstergelerini sürekli ölçüp belirlenen eşikler aşıldığında ekibi uyaran süreçtir. Sorunları kullanıcılar fark etmeden yakalamayı amaçlar.Loglama(Logging)Loglama (logging), bir yazılımın çalışırken gerçekleşen olayları belirli bir düzen ve seviye sistemiyle kayıt altına alması işlemidir. Hata ayıklama, performans izleme ve güvenlik denetimi için temel bir uygulamadır.Mikroservis(Microservices)Mikroservis, bir uygulamanın her biri tek bir işe odaklanan, kendi başına geliştirilip dağıtılabilen ve birbiriyle genellikle API ya da mesaj kuyruğu üzerinden haberleşen küçük servislere bölündüğü mimari yaklaşımdır.Dağıtık Sistem(Distributed System)Dağıtık sistem, ağ üzerinden birbirine bağlı birden fazla bilgisayarın ortak bir görevi yerine getirmek için birlikte çalıştığı ve kullanıcıya tek bir sistem gibi göründüğü yapıdır. Büyük web servisleri, bulut platformları ve blokzincirler bu modelle çalışır.LogLog, bir yazılımın ya da sistemin çalışırken gerçekleşen olayları tarih ve saatiyle kaydettiği kayıttır. Hataları bulmak, kullanıcı hareketlerini izlemek ve güvenlik olaylarını incelemek için kullanılır.Açık Kaynak(Open Source)Açık kaynak, bir yazılımın kaynak kodunun herkesin görebileceği, inceleyebileceği, değiştirebileceği ve lisans şartlarına uyarak dağıtabileceği biçimde yayımlanmasıdır. Linux, Firefox ve WordPress bilinen örneklerdir.JSONJSON (JavaScript Object Notation), verileri anahtar-değer çiftleri ve listeler hâlinde, hem insanların hem makinelerin kolayca okuyabileceği metin biçiminde saklayan ve taşıyan veri formatıdır.