Dağıtık BT mimarilerinde izleme ve günlüğe kaydetme düzenlemesi, dayanıklılığı sağlamak, hataları tespit etmek ve analiz etmek ile hizmetlerin performansını değerlendirmek için anahtar rol oynamaktadır. Tüm hizmetler için merkezi bir günlükleme ve metrik sistemi uygulamak önemlidir, böylece sistemde neler olup bittiğine dair tam bir resim elde edilebilir.
Genel adımlar:
Python'da günlükleme ayarlarının örneği:
import logging from pythonjsonlogger import jsonlogger logger = logging.getLogger() logHandler = logging.StreamHandler() formatter = jsonlogger.JsonFormatter() logHandler.setFormatter(formatter) logger.addHandler(logHandler) logger.setLevel(logging.INFO) logger.info('Hizmet başlatıldı', extra={'service': 'orders', 'env': 'prod'})
Anahtar özellikler:
Hizmetin tüm eylemlerini INFO düzeyinde günlüğe kaydetmek her zaman mı gerekir?
Cevap: Hayır, çünkü bu hızla günlük hacminin artmasına, performansın düşmesine ve gerçek hataların bulunmasını zorlaştırabilir. Günlük düzeylerinin anlamına (DEBUG hata ayıklama için, ERROR kritik sorunlar için, INFO önemli olaylar için) uymak daha iyidir.
Sadece altyapı düzeyinde metrik toplamak (CPU, RAM) ve uygulama düzeyindeki metrikleri yok saymak mümkün mü?
Cevap: Hayır. Uygulama düzeyi metrikleri (örneğin, yanıt süresi, hata sayısı) iş analitiği ve operasyonel tepki için kritik öneme sahiptir, bu metrikler, hizmetlerin mantığında olan “dar noktaları” görmekte yardımcı olur, sadece “donanımda” değil.
Dağıtık bir sistemde her zaman web sunucusu araçlarıyla standart HTTP istek izleme yeterli midir?
Cevap: Yanlış. Hizmet zincirlerini kapsayan karmaşık senaryolar için, her aşamada isteğin yolunu ve işlenme süresini görebilmek için, benzersiz bir Trace-Id ile tam anlamıyla dağıtık izleme gereklidir.