Reklam · TEST
AdSense Test ReklamıGönderi üstü · Görüntülü

Spring Boot CloudWatch Metriği Gözükmüyor? Adım Adım Çöz

Spring Boot uygulamanız ECS'de çalışıyor, API istekleri başarılı, loglar temiz görünüyor, ama CloudWatch'ta beklediğin custom metrikler hiç yok. Dashboard boş, namespace'de veri yok, birkaç dakika bekleyip yenilemişsin yine de bir şey gözükmüyor. Nereden başlayacaksın?

Sorun uygulama kodunda, Micrometer ayarlarında, metrik yayınlama mekanizmasında, AWS izinlerinde, ağ bağlantısında ya da CloudWatch sorgusunda olabilir. Hadi metriğin Spring Boot'tan CloudWatch'a giden yolunu takip edelim.

Önce Spring Boot'ta bir metrik kaydettiğinden emin ol. Micrometer kütüphanesini kullanarak basit bir counter ekle:

1import io.micrometer.core.instrument.MeterRegistry;
2import org.springframework.stereotype.Service;
3
5public class OrderService {
6private final MeterRegistry meterRegistry;
7
8public OrderService(MeterRegistry meterRegistry) {
9this.meterRegistry = meterRegistry;
10}
11
12public void processOrder(String orderId) {
13// İş mantığı
14meterRegistry.counter("orders.processed", "status", "success").increment();
15}
16}

Uygulamayı çalıştır ve `/actuator/metrics` endpoint'ini kontrol et. Eğer `orders.processed` metriği burada görünüyorsa, Spring Boot tarafında sorun yok.

Sonra CloudWatch Publisher'ı ekle. `pom.xml`'e Micrometer CloudWatch bağımlılığını koy:

1<dependency>
2<groupId>io.micrometer</groupId>
3<artifactId>micrometer-registry-cloudwatch</artifactId>
4</dependency>

`application.yml`'de CloudWatch ayarlarını yap:

1management:
2metrics:
3export:
4cloudwatch:
5enabled: true
6namespace: MyApp
7step: 1m

Şimdi IAM izinlerini kontrol et. ECS task role'ünün şu CloudWatch izinleri olması gerekir:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1"cloudwatch:PutMetricData"
2"ec2:DescribeVolumes"
3"ec2:DescribeTags"
4"logs:PutLogEvents"

ECS task role'ünde bu izinler yoksa, metrikler hiç yayınlanmayacak. AWS Console'da IAM > Roles bölümüne git, task role'ünü aç ve inline policy ekle.

Ağ bağlantısını da doğrula. ECS task'ının CloudWatch API'sine erişebildiğini kontrol et. Eğer VPC'de çalışıyorsa, security group'unda outbound 443 portu açık olmalı. CloudWatch'a erişim için NAT gateway ya da VPC endpoint gerekebilir.

Application log'larında hata var mı? Loglama seviyesini `DEBUG`'a koy:

1logging:
2level:
3io.micrometer: DEBUG

Uygulama başlatılırken Micrometer'ın CloudWatch registry'sini başlatıp başlatmadığını gör. Eğer "CloudWatch MeterRegistry initialized" mesajı yoksa, publisher aktif değil demektir.

CloudWatch'ta doğru namespace'i ve metric name'i sorguluyorsun değil mi? Namespace'i tam olarak ayarladığın gibi (`MyApp` mesela) gir, metric name'i de kodda kullandığın gibi (`orders.processed`). CloudWatch'ta 2-3 dakika gecikme olabileceğini hatırla.

Bu adımları sırasıyla takip edersen, sorunun nerede olduğunu bulursun. Çoğu zaman IAM izinleri ya da network erişimi eksiktir; çok az durumda da Micrometer konfigürasyonu yanlış olur.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz