개발이 완료되면 App을 모니터링해야 한다. ( Production-Ready )
App상태정보, 트래픽, DB상태정보 등등 다양한 모니터링 데이터가 존재한다. 그러나 개발자가 이를 하나 하나 파악하기에 어려움이 있다. SpringBoot는 다양한 모니터링 데이터를 한가지 동일한 방식으로 제공하는 라이브러리를 갖고 있는데, 그것이 엑츄에이터(Actuator)이다.
Actuator는 HTTP방식과 JMX방식으로 데이터를 제공한다. 이번 포스팅에서는 HTTP방식에 대해서 알아보겠다.
엑츄에이터 라이브러리를 Dependecy로 등록하면 Spring은 엑츄에이터 관련 Bean을 스프링 컨테이너에 추가한다. 그럼, 클라이언트는 URL로 원하는 모니터링 데이터를 가져올 수 있다.
▶︎ URL 형식 : http://localhost:8080/actuator/info
[ Domain 주소 ] / actuator / [ endpoint ]
원하는 모니터링 데이터는 endpoint로 특정지을 수 있다.
엑츄에이터는 Json데이터 형식으로 데이터를 반환하므로, 다른 모듈에서 쉽게 데이터에 접근하여 2차데이터를 생성할 수 있다.
그럼 이를 구현해보자.
구현
1. Dependency 추가하기
https://start.spring.io/ 에서 SpringBoot 프로젝트를 하나 만든다.
Dependency로 Spring Boot Actuator를 추가한다.
build.gradle에서 Actuator 라이브러리의 디펜던시가 추가되었음을 확인한다.
implementation 'org.springframework.boot:spring-boot-starter-actuator' // 엑츄에이터
2. application.yml 설정 추가하기
Actuator는 굉장히 민감한 데이터를 제공한다. 그래서 보안이 중요하다. Actuator가 제공하는 데이터를 web으로 확인려면 공개수준에 대한 설정을 추가해야 한다.
management:
endpoints:
web:
exposure:
include: "*"
include 값으로 ' * '을 설정하여 모든 엔드포인트가 공개되도록 하였다.
3. 엑츄에이터 테스트하기
SpringBoot 프로젝트를 시작해보자.
※ URL : localhost:8080/actuator/health
status가 UP이면 Application이 정상동작 중임을 의미한다. 여기서 자세한 정보를 알고 싶으면 설정을 추가하면 된다.
application.yml
management:
endpoint:
health:
show-details: always
endpoints:
web:
exposure:
include: "*"
endpoint로 health를 특정해서 설정을 추가하면 된다. 프로젝트를 다시 실행해보자.
디스크공간부터 핑정보까지 Health정보가 추가되었다.
추가로 /shutdown 엔드포인트의 경우, 어플리케이션을 종료하는 기능을 갖는다. 정말 위험한 기능으로 전체공개 설정을 넣어도 비공개로 설정된다. 그러므로 기능을 사용하려면 직접 공개처리 해야한다.
application.yml
management:
endpoint:
shutdown:
enabled: true
health:
show-details: always
endpoints:
web:
exposure:
include: "*"
shutdown 기능을 사용할 수 있도록 추가해주었다.
shutdown은 GET방식이 아닌 POST방식으로 동작하므로 Postman같은 프로그램을 사용하여 테스트해보면 된다.
shutdown 엔드포인트로 URL로 서버를 종료시킬 수 있다.
4. 보안 설정하기
엑츄에이터는 예민한 데이터와 기능을 제공하므로 보안이 중요하다. 몇가지 보안과 관련된 설정을 해보자.
포트변경하기
8080 포트는 서비스가 이루어지는 포트이다. 방화벽이 막힌 포트로 바꾸어주는 것이 좋다.
application.yml
management:
server:
port: 9292
endpoints:
web:
exposure:
include: "*"
management.server.port=9292로 변경한다.
테스트를 해보자.
http://localhost:9292/actuator/health 로 접근이 되는 모습이다.
8080포트가 아닌 안전한 포트로 변경하는 것이 좋다.
경로변경하기
기본경로는 http://localhost:9292/actuator/ [엔드 포인트]이다.
actuator가 아닌 다른 경로로 설정을 변경할 수 있다.
application.yml
management:
server:
port: 9292
endpoints:
web:
exposure:
include: "*"
base-path: "/manage"
endpoints.web.base-path="/manage" 로 경로를 변경하였다.
http://localhost:9292/manage/health 로 접근이 되는 모습이다. 이와같이, 내부자만 접근 가능한 포트번호와 경로로 설정을 변경한다면 엑츄에이터를 안전한 환경에서 사용할 수 있다.
참고자료
'SPRING > Spring Boot' 카테고리의 다른 글
[SpringBoot] 엑츄에이터(Actuator)(3) - 로그 및 HTTP 기록 확인하기 (0) | 2023.05.11 |
---|---|
[SpringBoot] 엑츄에이터(Actuator)(2) - info 엔드포인트 (0) | 2023.05.11 |
[SpringBoot] 외부설정 가져오기(3) - @ConfigurationProperties (1) | 2023.05.07 |
[SpringBoot] 외부설정 가져오기(2) - @Value (0) | 2023.05.07 |
[SpringBoot] Profile 사용하기 (0) | 2023.05.07 |