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라는 오픈소스를 사용한다.
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는 이미 여러 모니터링 기능을 제공한다.
'kubernetes' 카테고리의 다른 글
구글 현직자분께 물어본 Kubernetes와 보그(Vogue) 비교 (0) | 2024.11.19 |
---|---|
ArgoCD를 이용한 무중단 배포하기(Canary 방식, argo-rollout) (0) | 2024.11.19 |
kubernetes Pod의 Graceful Shutdown (feat. Kafka) (0) | 2024.11.19 |
Service Mesh - Kubernetes가 있는데 왜 Istio가 필요한가요? (0) | 2024.11.19 |
kubernetes 환경에서 Apache Kafka cluster를 구성해보자 (Operator 패턴) (0) | 2024.11.19 |