Spring-Boot는 /actuator Endpoint를 제공하여 프로그램의 모니터링을 가능하게 합니다. 그런데 이 정보는 JSON 형태로 가독성이 너무 떨어진다는 점이 존재하는데 그런 점을 보완하기 위해 나온 것이 Spring-Boot Admin으로 UI를 제공하고 일종의 대시보드 기능이라고 생각하면 됩니다. 위 이미지가 바로 기존의 Spring-Boot Actuator 를 통해 모니터링 하는 상황입니다.
주요 기능
- Actuator 에서 제공하는 정보를 다 볼 수 있습니다.
- Thread, Dump, Log File 등
- 런타임 시점에서 Log의 Level을 변경할 수 있다는 부분에서 사실 좀 놀랐습니다..
Spring-Boot Admin Server 구축
1. Server
[ build.gradle ]
implementation 'de.codecentric:spring-boot-admin-starter-server:2.6.2'
[ application.properties ]
server.port=8089
- 보안상의 엔드포인트 설정이 중요하지만 해당 포스팅에서는 테스트를 위해 사용해봄이 목적이므로 보안사항은 고려하지 않았습니다.
[ Spring Main Application ]
@EnableAdminServer
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
Amdin 서버 측은 크게 위의 세 가지 설정이 필요합니다.
2. Client
[ build.gradle ]
implementation 'de.codecentric:spring-boot-admin-starter-client:2.6.2'
[ application.properties ]
spring.boot.admin.client.url=http://localhost:8089
spring.boot.admin.cleint.instance=Client Server
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
실행 확인
[ Admin - Server 실행 ]
먼저, Admin의 Server를 실행하고 localhost:설정포트/application 의 엔드포인트로 접속하면 해당 UI 페이지가 정상적으로 나오는 것을 확인할 수 있습니다.
아직은 클라이언트를 켜지 않았기 때문에 서버측에 연결된 애플리케이션의 수가 0개인 것을 확인할 수 있죠 ?
[ Admin - Clinet 실행 ]
이제 Client 서버를 구동시키고 Admin Server에 접속해보면 ? 위와 같이 인스턴스가 등록되고 모니터링이 가능해진 것을 확인할 수 있어요.
application.properties 에서 상세 내역을 보기 위해서 management.endpoint.health.show-details 속성값을 always로 지정해줬기 때문에 구동중인 클라이언트 서버를 클릭하고 확인해보면 ? 다음과 같이 상세 정보들을 모니터링 할 수 있습니다 !
추후에 스프링 시큐리티를 추가로 공부하고, 시큐리티 부분도 적용해보도록 하겠습니다.
< 참고 자료 >
[Spring] Spring Boot Admin 사용하기 - Log, Login 적용
1. 기본 세팅 1.1 Admin Server maven 혹은 gradle에 spring-boot-admin-starter-server 라이브러리 추가 de.codecentric spring-boot-admin-starter-server 2.6.2 // https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-server imp
ynzu-dev.tistory.com