kubernetes

Spring Boot Actuator를 이용한 Kubernetes Pod의 Health check

downfa11 2024. 11. 19. 15:07

Spring Boot Acutator

Health Check와 상태 정보(Metrics) 제공 같은 공통 기능들을 마이크로서비스마다 각각 만드는건 비효율적이라, 쉽게 적용할 수 있는 프레임워크

Spring Cloud의 Component가 아니라, Spring Boot의 Component이다.

Spring Boot Actuator의 기능

  • beans : Spring Bean 리스트 반환
  • health : Health 상태 정보 반환
  • metrics : Metrics 리스트 반환
  • env : 환경변수 리스트 반환
  • loggers : log설정 get/set
  • thread dump : 쓰레드 상태 정보 반환

가장 많이 쓰이는 Metrics 기능은 Micrometer라는 오픈소스를 사용한다.

http://micrometer.io

 

Micrometer Application Observability

Vendor-neutral application observability facade Micrometer provides a facade for the most popular observability systems, allowing you to instrument your JVM-based application code without vendor lock-in. Think SLF4J, but for observability.

micrometer.io

 

Micrometer는 표준 Facade(인터페이스)를 제공해서 특정 Vendor에 종속되지 않고 필요에 따라 적절한 모니터링 제품으로 쉽게 바꿀 수 있다.

1. build.gradle 파일에 다음 Actuator 의존성 추가

implementation 'org.springframework.boot:spring-boot-starter-actuator'

Spring Boot Actuator는 애플리케이션의 운영 및 모니터링을 쉽게 지원하는 라이브러리이다.

애플리케이션의 상태를 실시간으로 확인하고 관리하는 여러 엔드포인트를 제공하며, 특히 운영 환경에서의 유지 보수와 장애 대응에 도움을 준다.

2. membership-service 프로젝트 내의 application.properties 수정

management.endpoint.web.exposure.include=health
  • management.endpoint.health.show-details=always : 디스크, 캐시 등 의 추가 상태 표시

3. kubernetes 환경에서 Helm Chart 설정

membership-service-chart/templates/deployment.yaml

readinessProbe:
    httpGet:
        path: /actuator/health
        port: http
livenessProbe:
    httpGet:
        path: /actuator/health
        port: http
  • Readiness Probe : Pod가 트래픽을 받을 준비가 되었는지 확인한다.
    • 아직 준비되지 않은 상태에서 요청을 받는걸 방지하기 위해서 조치
  • Liveness Probe : Pod가 정상적으로 작동하는지 확인한다.
    • 메모리 누수나 DeadLock 발생시 liveness가 감지해서 컨테이너를 자동 재시작
  • Startup Probe : 애플리케이션의 초기화 시간이 너무 오래 걸리는 경우, k8s이 너무 일찍 상태 검사를 수행해서 오류로 인식해 컨테이너를 재시작하지 않도록 해준다.

직접 @RestController로 Health check 엔드포인트를 만들 필요가 없다.

Spring Boot Actuator의 의존성과 application.properties 설정으로만 /actuator/health 엔드포인트가 자동 생성된다.

Actuator는 이미 여러 모니터링 기능을 제공한다.