개인 프로젝트를 하던 중에 문득 API를 만드는 것만으로 끝이 아니란 생각이 들었다. 뭔가 더 깊은 공부를 해야할 거 같은 느낌 (취업이 너무 어렵기도 하고 ㅎ) 그래서 생각하는데 나는 사용자 친화적이고, 활용가능한 코드를 추구하는데 이걸 어떻게 모니터링하고, 수정해야하는지가 궁금해졌다. 물론 코드만 작성하는 코더가 되고 싶지 않은 것도 있었다!
아직은 배포 중인 프로젝트가 아니라 굳이? 싶기도 하지만 알아두면 좋잖아 ㅎ
그러던 중 찾게 된 Spring Actuator
Spring Actuator란?
Spring boot로 Backend를 구현한 경우 애플리케이션 모니터링, 관리 측면에서 도움을 주는 기능이다.
HTTP 방식과 JMX 방식이 있고, 대표적으로 Health Check 용도의 actuator health endpoint에 많이 쓰인다.
* JMX(Java Management eXtension)
애플리케이션, 시스템, JVM 등을 모니터링하고 관리하기 위한 도구를 제공하는 Java 기술. JMX라는 표준화된 방법을 통해 다양한 모니터링 도구 및 시스템과 쉽게 통합할 수 있다.
* Health Check
로드 밸런서에서 각 서버의 헬스 체크 API를 호출해서 해당 서버가 현재 서비스 가능한 상태인지 주기적으로 점검한다.
즉, 헬스 체크는 정상적으로 서비스 가능한 서버에만 트래픽을 보내서 서비스의 고가용성을 확보하는 데 도움을 준다.
서비스의 고가용성(HA, Higb Availability)과 고성능을 위한 부하 분산 등의 이유로 서버를 여러 대를 둔다. 그리고 어떤 서버로 요청을 보낼지 라우팅 역할을 하는 로드 밸런서를 둔다.
[build.gradle]
implementation 'org.springframework.boot:spring-boot-starter-actuator'
[application.yml]
management:
endpoints:
web:
exposure:
include: "*"
이후 별도의 설정을 하지 않으면 http://localhost:8080/actuator 에서 다양한 엔드포인트를 확인할 수 있다.
이건 누구나 접속할 수 있기 때문에 보안적으로 좋지 않으므로 개발단계에서만 사용해야한다. (제한을 두는게 중요.)
Actuator 조회 정보
/actuator/beans
스프링 컨테이너에 등록된 스프링 빈
/actuator/conditions
스프링 빈의 생성조건이 충족됐는지 여부 (Conditions Evaluation Report)
/actuator/configprops
애플리케이션에서 액세스할 수 있는 모든 Environment속성 (@ConfigurationProperties)
/actuator/health
health정보(설정에 따라 기본 또는 확장)
/actuaotr/heapdump
트러블슈팅과 분석을 위해 힙덤프 시작
/actuaotr/info
애플리케이션 정보
/actuator/loggers
모든 컴포넌트의 로깅수준
/actuator/mappings
모든 엔드포인트 매핑과 세부 지원 정보 (@RequestMapping)
/actuator/metrics
애플리케이션에서 현재 캡처 중인 메트릭스
/actuator/threaddump
트러블 슈팅과 분석을 위해 스레드 덤프 실행
. . .
그리고 단순히 조회만 하면 위에서 접속했듯이 웹브라우저로 가능하나, 값을 변경하는 작업은 지원하지 않고, json 형식으로 많은 데이터가 나올 경우 확인하기 힘들다.
또 여러 application이 있다면 서로 다른 Ip를 변경해가면서 값을 전부 확인해야한다.
그래서 사용하는 Spring Boot Admin !
'Tech > Spring | Spring Boot' 카테고리의 다른 글
[Spring Boot][모니터링] Spring Boot + Prometheus + Grafana 모니터링 구축해보기 (0) | 2024.11.04 |
---|---|
[Spring Boot][모니터링] Spring Boot Admin 사용해보자 (0) | 2024.10.26 |
[Lombok][Java] @Builder 에 대해 알아보자 (Builder Pattern) (0) | 2024.09.12 |
[Testing][Mockito]@Mock, @MockBean, @InjectMocks (0) | 2024.09.10 |
[SpringBootJPA] 카카오페이 결제API (결제취소) (0) | 2024.08.01 |
댓글