Files
spring-boot-examples/docs/actuator/04_prometheus.md
2025-04-08 19:56:24 +09:00

3.7 KiB

좋아, 이제 4부. 운영 환경 통합을 작성해볼게. 이 파트에서는 액추에이터를 실무에서 자주 사용하는 외부 도구들과 연동하는 방법을 다룰게. 특히 Prometheus, Grafana, Spring Boot Admin, 클라우드 환경 중심으로 구성할게.


4부. 운영 환경 통합


16장. Prometheus & Grafana 연동

Micrometer + Prometheus 설정

dependencies {
    implementation 'io.micrometer:micrometer-registry-prometheus'
}
management:
  endpoints:
    web:
      exposure:
        include: prometheus
  metrics:
    export:
      prometheus:
        enabled: true

결과: /actuator/prometheus 엔드포인트에서 Prometheus 포맷의 메트릭 제공

Prometheus 설정 예시 (prometheus.yml)

scrape_configs:
  - job_name: 'spring-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['localhost:8080']

Grafana 대시보드 구성

  • 데이터 소스: Prometheus
  • 대시보드: Micrometer for JVM preset 사용 가능
  • JVM 메모리, GC, HTTP 요청 등 실시간 그래프 시각화

17장. Spring Boot Admin 연동

의존성 추가

implementation 'de.codecentric:spring-boot-admin-starter-client'

클라이언트 애플리케이션 설정

spring:
  boot:
    admin:
      client:
        url: http://localhost:8081  # Spring Boot Admin 서버 주소

액추에이터 엔드포인트가 자동 등록되어 UI로 상태, 메트릭, 로그 등 확인 가능

서버 애플리케이션 설정 (별도 프로젝트)

dependencies {
    implementation 'de.codecentric:spring-boot-admin-starter-server'
    implementation 'spring-boot-starter-security'
}
@EnableAdminServer
@SpringBootApplication
public class AdminServerApp {
    public static void main(String[] args) {
        SpringApplication.run(AdminServerApp.class, args);
    }
}

18장. 클라우드 환경에서의 액추에이터 활용

Kubernetes 헬스체크에 활용

livenessProbe:
  httpGet:
    path: /actuator/health/liveness
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

readinessProbe:
  httpGet:
    path: /actuator/health/readiness
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10

liveness/readiness 구성은 아래처럼 사용자 정의 가능

@Component("readiness")
public class ReadinessHealthIndicator implements HealthIndicator {
    @Override
    public Health health() {
        // DB 연결 확인, 외부 API 체크 등
        return Health.up().build();
    }
}

AWS CloudWatch 또는 Azure Monitor 연동

  • Micrometer에서 제공하는 별도 레지스트리 사용
  • AWS 예시: micrometer-registry-cloudwatch2 사용
  • Azure 예시: micrometer-registry-azure-monitor

19장. Docker + 액추에이터

Dockerfile 예시

FROM openjdk:17
COPY build/libs/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

Docker + Prometheus 연동

  • 동일 네트워크에서 Prometheus가 액추에이터 엔드포인트를 스크래핑하도록 구성
  • 컨테이너 내에서 보안 설정이나 포트 노출 주의

요약

  • 액추에이터는 Prometheus, Grafana, Spring Boot Admin 등 외부 도구와 쉽게 통합됨
  • Kubernetes 등 클라우드 환경에서 liveness/readiness probe로 활용 가능
  • 실시간 모니터링, 장애 탐지, 자원 사용량 분석에 필수적인 구성 요소임

이제 마지막 5부. 실전 활용과 사례 연구로 이어지면 완성형 실무서 느낌이 날 거야. 계속 써줄까?