Datadog ile APM ve Altyapı İzlemede Derinlemesine Yaklaşım

 · 

Datadog ile APM ve Altyapı İzlemede Derinlemesine Yaklaşım

Datadog ile APM ve Altyapı İzlemede Derinlemesine Yaklaşım

Modern dağıtık sistem mimarileri, mikroservisler ve bulut altyapıları, geleneksel izleme yaklaşımlarını yetersiz bırakmaktadır. Uygulama performansı sorunları veya altyapı darboğazları, hızla büyüyen sistemlerde izole edilmesi zor karmaşık etkileşimlere sahiptir. Datadog, bu karmaşıklığı Application Performance Monitoring (APM) ve Altyapı İzleme özelliklerini tek bir platformda birleştirerek ele alır.

Mikroservis Karmaşıklığında Gözlemlenebilirlik İhtiyacı

Bir e-ticaret uygulamasını düşünün: Ödeme servisi, envanter servisi, kullanıcı profili servisi gibi onlarca farklı mikroservis eş zamanlı çalışır. Bir siparişin tamamlanması, bu servislerin belirli bir sırayla ve başarıyla iletişim kurmasına bağlıdır. Bu zincirdeki herhangi bir halkadaki performans düşüşü, tüm kullanıcı deneyimini olumsuz etkiler. İşte tam bu noktada Datadog'un uçtan uca gözlemlenebilirlik yeteneği devreye girer. Altyapı metriklerinden (CPU, bellek, disk I/O, ağ) uygulama katmanındaki trace'lere ve loglara kadar tüm verileri korele bir şekilde sunar.

Datadog APM: Uygulama Davranışını Çözümleme

Datadog APM, dağıtık sistemlerdeki her bir isteğin (request) yaşam döngüsünü baştan sona izler. Bu, servisler arası geçişleri, veritabanı sorgularını, harici API çağrılarını ve her bir işlemin ne kadar süre aldığını görselleştirmeyi sağlar. Datadog agent'ları ve uygulama düzeyinde enstrümantasyon kütüphaneleri (örneğin Java için OpenTracing/OpenTelemetry uyumlu tracer'lar), span'ler aracılığıyla trace'leri toplar ve merkezi Datadog backend'ine gönderir.

Bir Java Spring Boot uygulamasında Datadog APM'i etkinleştirmek için genellikle aşağıdaki gibi bir JVM argümanı kullanılır:

-javaagent:/opt/datadog/dd-java-agent.jar 
-Ddd.service.name=my-ecom-service 
-Ddd.env=production 
-Ddd.version=1.0.0 
-Ddd.agent.host=datadog-agent.monitoring.svc.cluster.local 
-Ddd.agent.port=8126

Bu yapılandırma ile my-ecom-service adlı mikroservisin tüm metod çağrıları, HTTP istekleri ve veritabanı etkileşimleri otomatik olarak izlenmeye başlar. Datadog, servis haritaları (Service Maps) oluşturarak servisler arası bağımlılıkları ve veri akışlarını gösterir, bu da bir hata durumunda etkilenen servisleri hızla tespit etmenizi sağlar.

Gerçek Senaryo: Kritik Bir Mikroservisin Performansını İnceleme

Bir üretim ortamında, kullanıcıların ödeme işlemlerinde zaman zaman 5-10 saniyelik gecikmeler yaşadığı bildirildi. Geleneksel log analizleri ile bu tür aralıklı sorunların kök nedenini bulmak zordur. Datadog APM'i kullanarak PaymentService'in trace'lerini incelediğimizde, gecikmelerin %80'inin FraudDetectionService'e yapılan senkronize bir gRPC çağrısından kaynaklandığını gördük. FraudDetectionService'in kendi içinde ise, belirli saatlerde yoğunluktan dolayı bir ML modelinin sorgusunun beklenenden uzun sürdüğü ortaya çıktı. Bu bilgiyle birlikte, FraudDetectionService için daha fazla kaynak tahsis edildi ve ML modelinin asenkron bir kuyruk mekanizması üzerinden çalışması için iyileştirme yapıldı, böylece PaymentService üzerindeki blokaj ortadan kaldırıldı.

Datadog Altyapı İzleme: Temel Katmanda Şeffaflık

APM katmanının altında, uygulamanın çalıştığı donanım veya bulut kaynaklarının performansı yatar. Datadog Altyapı İzleme, sunucular, sanal makineler, konteynerler ve bulut hizmetleri gibi tüm altyapı bileşenlerinden metrikleri, olayları ve logları toplar. Datadog Agent, bu verileri doğrudan işletim sisteminden (CPU kullanımı, bellek tüketimi, disk G/Ç, ağ trafiği) ve entegrasyonlar aracılığıyla çeşitli hizmetlerden (örneğin, Nginx, Redis, PostgreSQL) çeker.

Kubernetes ortamında Datadog Agent'ı bir DaemonSet olarak dağıtmak, her bir node'dan ve üzerinde çalışan pod'lardan metrik toplamanın en yaygın yoludur:

apiVersion: apps/v1 
kind: DaemonSet 
metadata: 
  name: datadog-agent 
  namespace: datadog 
spec: 
  selector: 
    matchLabels: 
      app: datadog-agent 
  template: 
    metadata: 
      labels: 
        app: datadog-agent 
    spec: 
      serviceAccountName: datadog-agent 
      containers: 
        - name: agent 
          image:             
← Blog Listesine Dön