Spring Boot Actuator, uygulamalarınızı izlemek ve yönetmek için prodüksiyon seviyesinde hazır özellikler sunar. Bu rehber, Actuator'ın yeteneklerini, nasıl etkinleştirileceğini ve endpointlerin nasıl güvenlik altına alınacağını incelemektedir.
Yazan
Şuayb Şimşek
Spring Boot, güvenlik, mikroservis ve cloud-native mimari konularında pratik teknik notlar paylaşan backend odaklı fullstack geliştirici.
Varsayılan olarak, Actuator uygulama bilgilerinin sağlanması için çeşitli endpointler yayınlar. Bu endpointleri application.properties veya application.yml dosyasında etkinleştirebilirsiniz.
Örnek Konfigürasyon:
Bu yapılandırmayı başlangıç noktası olarak alın, sonra ortamınıza göre değerleri uyarlayın.
🛠️ Adım 5: Actuator Endpointlerini Güvenli Hale Getirin
Prodüksiyon ortamlarında, Actuator endpointlerinin güvenli hale getirilmesi önemlidir. Spring Security kullanarak erişimi sınırlayabilirsiniz.
▶️ Uygulamayı Çalıştırma
Uygulamayı aşağıdaki komutla çalıştırın:
BASH
./mvnw spring-boot:run
Actuator endpointlerine erişim sağlamak için:
FILENAME
http://localhost:8080/actuator/health
🧪 API'ı Test Edin
Actuator endpointlerini cURL veya tarayıcı kullanarak test edebilirsiniz:
Health Endpoint:
BASH
curl -X GET http://localhost:8080/actuator/health
Info Endpoint:
BASH
curl -X GET http://localhost:8080/actuator/info
🏁 Sonuç
Artık Spring Boot Actuator için üretim odaklı bir Spring Boot temeliniz var. Sonraki adımda ayarları kendi domainine uyarlayıp test ve gözlemlenebilirlik katmanını ekleyerek gerçek trafik altında doğrulayın.
JAVASecurityConfig.java
package com.example.demo.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests()
.requestMatchers("/actuator/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.httpBasic();
return http.build();
}
}