Spring Boot Actuator ile Uygulamanın İçine Bir Bakış

Hiç paketlenmiş bir hediyenin içinde ne olduğunu tahmin etmeye çalıştığınız oldu mu? Onu sallarsınız, tartarsınız, hatta ölçüp biçersiniz. İçindekine dair bir fikir edinirsiniz ama açıp bakmadan emin olamazsınız.

Aslında çalışan bir uygulama da böyledir. Loglara bakarak tahminlerde bulunabilir, bazı davranışları gözlemleyebilirsiniz; fakat uygulamanın iç dünyasını tam anlamıyla görmek sanıldığı kadar kolay değildir.

İşte burada Spring Boot Actuator devreye girer. Actuator, Spring Boot uygulamalarına üretim ortamına hazır izleme, sağlık kontrolü ve metrik toplama yetenekleri kazandıran güçlü bir modüldür.

Bu yazıda Actuator’ın sunduğu özelliklere detaylıca bakacak, endpoint’leri tanıyacak ve çalışma mantığını anlamaya çalışacağız.

⭐ Bu Yazıda Neler Var?

  • Actuator web endpoint’lerine giriş
  • Uygulama yapılandırmasını inceleme
  • Runtime metriklerini görüntüleme
  • Trace ve thread dump alma
  • Sağlık kontrolleri ile uygulama durumu sorgulama
  • Shutdown endpoint’i
  • JMX ve diğer araçlara genel bakış

1 Actuator Endpoint’lerini Keşfetme

Spring Boot Actuator’ın en güçlü tarafı, uygulamanın çalışma zamanındaki iç durumunu REST endpoint’leri üzerinden sunmasıdır.

Bu endpoint’ler sayesinde:

  • Spring application context içindeki bean’leri görebilir,
  • Environment değişkenlerini inceleyebilir,
  • Performans metriklerini takip edebilir,
  • Son 100 isteğin ayrıntılarını görebilir,
  • Uygulamanın sağlık durumunu sorgulayabilir,
  • Hatta uygulamayı uzaktan kapatabilirsiniz.

Aşağıda Actuator’ın varsayılan olarak sunduğu endpoint’leri görebilirsiniz:

HTTP Method Endpoint Açıklama
GET/autoconfigOtomatik yapılandırma koşullarını ve sonuçlarını listeler.
GET/configpropsConfig properties ile beslenen tüm bean’leri gösterir.
GET/beansApplication context içindeki bean’leri listeler.
GET/dumpThread’lerin anlık durumunu döker.
GET/envEnvironment değişkenlerini gösterir.
GET/env/{name}Belirli bir environment değişkenini döndürür.
GET/healthUygulamanın sağlık durumunu raporlar.
GET/infoinfo.* prefix’i ile belirtilen bilgileri gösterir.
GET/mappingsTüm URI mapping’lerini gösterir.
GET/metricsBellek, CPU, GC, HTTP sayaçları gibi metrikleri sunar.
GET/metrics/{name}Belirli bir metriğin değerini döndürür.
POST/shutdownUygulamayı uzaktan kapatır (varsayılan: kapalı).
GET/traceSon 100 isteğin iz bilgisini döndürür.

1.1 Yapılandırma Detaylarını Görüntüleme

Spring Boot’ta component scanning ve autowiring mekanizması oldukça güçlüdür; ancak bazen uygulama içindeki bean ilişkilerini görmek isteyebilirsiniz.

Bu noktada /beans endpoint’i tam anlamıyla bir röntgen görevi görür.

{
  "bean": "readingListController",
  "dependencies": ["readingListRepository", "amazonProperties"],
  "scope": "singleton",
  "type": "readinglist.ReadingListController"
}
    

1.2 Çalışma Zamanı Metriklerini İzleme (/metrics)

Tıpkı doktor muayenesindeki nabız, tansiyon ve refleks ölçümleri gibi, Actuator da uygulamanın çalışma zamanına dair birçok metrik sunar.

mem: 198144
mem.free: 144029
processors: 8
uptime: 1887794
threads: 21
gc.ps_scavenge.count: 22
counter.status.200.root: 6
gauge.response.root: 11
    

1.3 HTTP Trace Verilerini İnceleme (/trace)

/trace, uygulamanızın son 100 isteğine ait detaylı bir log sunar.

{
  "timestamp": 1426378239775,
  "info": {
    "method": "GET",
    "path": "/metrics",
    "headers": {
      "request": { "accept": "*/*", "host": "localhost:8080" },
      "response": { "status": "200" }
    }
  }
}
    

1.4 Thread Dump Alma (/dump)

/dump endpoint’i JVM üzerinde çalışan tüm thread’lerin anlık snapshot’ını döndürür.

"threadName": "container-0",
"threadState": "TIMED_WAITING",
"stackTrace": [
  { "className": "java.lang.Thread", "methodName": "sleep" }
]
    

1.5 Sağlık Kontrolü (/health)

Uygulamanın çalışıp çalışmadığını anlamanın en hızlı yolu:

{"status": "UP"}

Yetkili kullanıcı giriş yaptıysa daha fazla bilgi sunar:

{
  "status": "UP",
  "diskSpace": { "status": "UP", "free": 377423302656 },
  "db": { "status": "UP", "database": "H2" }
}
    
Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Spring Boot ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *