OpenTelemetry ile CloudWatch Application Signals Entegrasyonu
AWS CloudWatch Application Signals, uygulamalarınızın performansını otomatik olarak izlemenizi ve sorunları hızlıca tespit etmenizi sağlayan güçlü bir gözlemlenebilirlik özelliğidir. Bu rehberde, OpenTelemetry (OTel) kullanarak Application Signals'ı nasıl entegre edeceğinizi adım adım inceleyeceğiz.
İçindekiler
- Giriş
- CloudWatch Application Signals Nedir?
- Neden OpenTelemetry?
- Mimari ve Çalışma Prensibi
- Adım Adım Kurulum Rehberi
- Sıkça Sorulan Sorular (SSS)
- Sonuç
Giriş <a name="giris"></a>
Modern mikroservis mimarilerinde, uygulamanızın sağlığını anlamak zor olabilir. Dağıtık sistemlerdeki hataları izlemek, darboğazları bulmak ve kullanıcı deneyimini iyileştirmek için gözlemlenebilirlik (observability) kritik öneme sahiptir. AWS CloudWatch Application Signals, bu ihtiyacı karşılamak için tasarlanmıştır.
CloudWatch Application Signals Nedir? <a name="cloudwatch-application-signals-nedir"></a>
CloudWatch Application Signals, uygulama performansını (hata oranı, gecikme süresi, istek sayısı) servis bazında otomatik olarak izler. Size şunları sunar:
- Otomatik Servis Haritası: Servislerinizin birbirleriyle nasıl iletişim kurduğunu görselleştirir.
- Service Level Objectives (SLO): İş hedeflerinize uygun performans metrikleri tanımlamanızı sağlar.
- X-Ray Entegrasyonu: İzleme (trace) verileriyle sorunların kök nedenini analiz etmenizi kolaylaştırır.
Neden OpenTelemetry? <a name="neden-opentelemetry"></a>
OpenTelemetry (OTel), gözlemlenebilirlik verilerini (loglar, metrikler, izler) toplamak için endüstri standardı haline gelmiş açık kaynaklı bir projedir. AWS CloudWatch, OTel ile tam uyumlu çalışır.
- Vendor Agnostic: Tek bir sağlayıcıya bağımlı kalmazsınız.
- Geniş Ekosistem: Birçok dil ve framework için hazır kütüphaneler sunar.
- Esneklik: Verileri topladıktan sonra birden fazla hedefe (CloudWatch, Prometheus, vb.) gönderebilirsiniz.
Mimari ve Çalışma Prensibi <a name="mimari-ve-calisma-prensibi"></a>
Aşağıdaki diyagram, OpenTelemetry Collector ve CloudWatch Application Signals'ın nasıl birlikte çalıştığını göstermektedir.

Uygulamanız (Java, Python, Node.js vb.) OTel SDK ile enstrümente edilir. Veriler ADOT (AWS Distro for OpenTelemetry) Collector'a gönderilir ve buradan CloudWatch'a iletilir.
Adım Adım Kurulum Rehberi <a name="adim-adim-kurulum-rehberi"></a>
Bu bölümde, basit bir Java uygulamasını OpenTelemetry ile CloudWatch Application Signals'a nasıl bağlayacağımızı göreceğiz.
Ön Koşullar
- AWS Hesabı
- AWS CLI yüklü ve yapılandırılmış
- Kubernetes (EKS) veya ECS kümesi (Örnek EKS üzerindendir)
kubectlvehelmaraçları
Adım 1: ADOT Eklentisini Kurun
EKS kümenize AWS Distro for OpenTelemetry (ADOT) operatörünü kurun.
# EKS Add-on olarak ADOT kurulumu
aws eks create-addon --cluster-name my-cluster --addon-name adot --addon-version v0.88.0-eksbuild.1
Adım 2: OpenTelemetry Collector Yapılandırması
CloudWatch'a veri göndermek için bir Collector yapılandırması (YAML) oluşturun. application_signals özelliğini etkinleştirmeyi unutmayın.
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: my-collector
spec:
mode: daemonset
config: |
receivers:
otlp:
protocols:
grpc:
http:
processors:
resourcedetection:
detectors: [aws_eks]
batch:
exporters:
awscloudwatch:
region: us-east-1
logs:
log_group_name: "/aws/containerinsights/my-cluster/application"
log_stream_name: "application-signals"
service:
pipelines:
traces:
receivers: [otlp]
processors: [resourcedetection, batch]
exporters: [awscloudwatch]
metrics:
receivers: [otlp]
processors: [resourcedetection, batch]
exporters: [awscloudwatch]
Bu yapılandırmayı uygulayın:
kubectl apply -f collector-config.yaml
Adım 3: Uygulamanızı Enstrümente Edin
Java uygulamanız için otomatik enstrümantasyon (auto-instrumentation) kullanabilirsiniz. Dockerfile veya Kubernetes deployment dosyanıza gerekli ortam değişkenlerini ekleyin.
env:
- name: OTEL_RESOURCE_ATTRIBUTES
value: "service.name=my-java-service,service.namespace=production"
- name: OTEL_TRACES_EXPORTER
value: "otlp"
- name: OTEL_METRICS_EXPORTER
value: "otlp"
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://my-collector-collector:4317"
Sıkça Sorulan Sorular (SSS) <a name="sikca-sorulan-sorular"></a>
1. CloudWatch Application Signals ücretli mi?
Evet, Application Signals kullanımı standart CloudWatch metrikleri ve X-Ray izleme ücretlerine tabidir. Ancak, sağladığı otomatik analiz yetenekleri operasyonel maliyetlerinizi düşürebilir.
2. Hangi diller destekleniyor?
Java, Python, Node.js ve .NET başta olmak üzere OpenTelemetry SDK'sı olan çoğu dil desteklenmektedir. AWS, Java ve Python için özel otomatik enstrümantasyon ajanları sunar.
3. Mevcut X-Ray kurulumumla çalışır mı?
Evet, Application Signals X-Ray ile entegre çalışır. Mevcut X-Ray izlerinizi zenginleştirerek servis haritası ve SLO takibi gibi özellikler ekler.
4. Application Signals'ı neden kullanmalıyım?
Manuel dashboard oluşturmak yerine, servislerinizin sağlığını "kutudan çıktığı gibi" (out-of-the-box) izlemek ve otomatik anormallik tespiti yapmak için kullanmalısınız.
Sonuç <a name="sonuc"></a>
CloudWatch Application Signals ve OpenTelemetry entegrasyonu, modern uygulamalar için güçlü bir gözlemlenebilirlik çözümü sunar. Standartlara dayalı (OTel) veri toplama ve AWS'nin gelişmiş analiz yeteneklerini birleştirerek, sistemlerinizin güvenilirliğini artırabilirsiniz.
Daha fazla bilgi için AWS CloudWatch Dokümantasyonu ve OpenTelemetry Resmi Sitesi'ni inceleyebilirsiniz.