반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 데이터과학
- 디자인패턴
- 컴퓨터공학
- 데이터구조
- 보안
- 컴퓨터과학
- 프로그래밍언어
- 버전관리
- 소프트웨어공학
- 소프트웨어
- 프로그래밍
- 컴퓨터비전
- 웹개발
- 클라우드컴퓨팅
- 네트워크보안
- 파이썬
- 알고리즘
- 자료구조
- 인공지능
- 사이버보안
- 데이터분석
- 네트워크
- 딥러닝
- springboot
- 머신러닝
- 데이터베이스
- 빅데이터
- Yes
- I'm Sorry
- 자바스크립트
Archives
- Today
- Total
스택큐힙리스트
Actuator로 헬스 체크 실시간 모니터링 본문
반응형
1. 왜 Spring Boot Actuator로 헬스 체크를 해야 할까?
프로덕션 환경에서는 “애플리케이션이 살아 있는지·요청을 받을 준비가 됐는지”를 자동으로 감시해야 합니다. Actuator는 /actuator/health 엔드포인트 하나로 CPU·메모리뿐 아니라 DB, Redis, Kafka 등 외부 의존성까지 상태를 종합 분석해 줍니다. 헬스 체크를 모니터링 서비스·쿠버네티스 프로브·로드밸런서와 바로 연동할 수 있어, 다운타임을 최소화하고 장애 감지를 앞당깁니다.
2. Actuator 빠르게 적용하기
- 의존성 추가
implementation("org.springframework.boot:spring-boot-starter-actuator")
- 엔드포인트 노출 설정 (기본은 health·info만 노출)
management: endpoints: web: exposure: include: health,info,metrics
- 실행 & 확인
./gradlew bootRun curl http://localhost:8080/actuator/health
3. 헬스 체크 결과 해석하기
- UP : 애플리케이션·의존 서비스 모두 정상
- DOWN / OUT_OF_SERVICE : 서비스 불가 → 모니터링 시스템에 알람
- UNKNOWN : 상태 정보를 제공하지 않는 경우 (커스텀 인디케이터 누락 등)
Actuator는 내부적으로 HealthIndicator 빈을 모아 종합 결과를 만듭니다. DB, RabbitMQ, Elasticsearch 등이 자동으로 포함되며, 시간 지연이 길면 “어느 인프라에서 느려졌는지”도 확인 가능합니다.
4. Liveness / Readiness 프로브 분리하기
쿠버네티스 배포라면 다음 설정만으로 컨테이너 재시작(liveness) 과 트래픽 수신 준비(readiness) 를 각각 모니터링할 수 있습니다.
management:
endpoint:
health:
probes:
enabled: true
endpoints:
web:
exposure:
include: health
- /actuator/health/liveness → JVM Deadlock, OutOfMemory 등 생존 여부
- /actuator/health/readiness → DB 연결·메시지 브로커 등 외부 의존성 준비 상태
5. 커스텀 HealthIndicator 만들기
@Component
public class SlackApiHealthIndicator implements HealthIndicator {
private final SlackClient slackClient;
public SlackApiHealthIndicator(SlackClient slackClient) {
this.slackClient = slackClient;
}
@Override
public Health health() {
boolean reachable = slackClient.ping();
return reachable ? Health.up().build()
: Health.down().withDetail("error", "Slack API unreachable").build();
}
}
SlackApiHealthIndicator 빈을 등록하면 /actuator/health JSON에 slackApi 섹션이 자동으로 추가됩니다.
6. 운영 환경 꿀팁
- 보안 : 프로덕션에서는 IP·SecurityFilter 또는 API Key로 헬스 엔드포인트를 보호하세요.
- 프로메테우스 : micrometer-registry-prometheus 의존성 하나면 Actuator + 메트릭스가 /actuator/prometheus 로 노출됩니다.
- 경량화 : 불필요한 인디케이터는 management.health.redis.enabled=false 처럼 끌 수 있습니다.
- 슬랙 알림 : Spring Boot 3.2부터 WebHook URL만 지정하면 헬스 상태 변화를 이벤트로 받을 수 있습니다.
반응형
'개발' 카테고리의 다른 글
Adapter 패턴으로 레거시 API 호환하기 (1) | 2025.07.17 |
---|---|
레거시 API도 걱정 끝! 리액트·스프링에서 Adapter·Facade 패턴으로 우아하게 래핑하기 (0) | 2025.07.17 |
자바 스프링 개발 시작하기 - 10일차 스타터 & 프로파일로 미니 API 완성 (1) | 2025.07.17 |
Spring Security × Swagger로 Bearer JWT 자동 테스트 세팅 (0) | 2025.07.17 |
Swagger UI로 API 문서 자동화 & 협업 꿀팁 (1) | 2025.07.16 |
Comments