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;35public class OrderService {6private final MeterRegistry meterRegistry;78public OrderService(MeterRegistry meterRegistry) {9this.meterRegistry = meterRegistry;10}1112public 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: true6namespace: MyApp7step: 1mŞimdi IAM izinlerini kontrol et. ECS task role'ünün şu CloudWatch izinleri olması gerekir:
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: DEBUGUygulama 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.
0 yorum