파란하늘의 지식창고
article thumbnail
Published 2023. 1. 30. 19:23
Spring Boot Admin 사용해 보기 Study/Java
반응형

소개

Spring Boot Actuator까지 설정하고 Actuator의 내용을 /actuator/* 주소를 호출하여 확인하는 것까지 진행하였었다.

각각의 application을 일일이 조회하여 확인하는 것은 가장 단순한 방법이고 여러 application의 상태를 한 곳에서 모니터링하는 것이 좋다.

metric 정보를 수집하여 관리하는 방법은 다양하다.
유료로 제공하는 경우도 있고 오픈 소스로 사용하기 좋은 것도 많다.
Spring Boot Admin는 오픈소스로 로그를 따로 저장하지 않고 단순하게 조회할 때마다 현재 상태를 확인할 수 있는 UI를 제공해 준다.
Spring이 제공하는 공식 오픈소스는 아니고 codecentric에서 제공하는 오픈 소스이다.

https://github.com/codecentric/spring-boot-admin

https://codecentric.github.io/spring-boot-admin/current/

Spring Boot Admin은 Eureka와 동일하게 Server를 띄우고 Client를 설정하여 등록하는 방식이다.
만약 Eureka 또는 Consul을 사용하고 있으면 해당 Service Discovery 정보를 사용한다.

Spring Boot Admin Server 설정

Spring Boot Admin Server 설정은 간단하다.

dependency를 추가하고 @EnableAdminServer만 추가하면 된다.

dependency 설정

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-server</artifactId>
</dependency>

java 설정

@EnableAdminServer
public class Application {
	
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

접근을 제한하고 싶은 경우 Spring Security 인증을 연동하면 되는데 여기서는 생략한다.

Spring Boot Admin Client 설정

Spring Boot Admin Server에 등록하길 원하는 대상 application에 dependency를 추가하고 properties 설정을 해주면 된다.

dependency 설정

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>

properties 설정

https://codecentric.github.io/spring-boot-admin/current/#spring-boot-admin-client

만약 Admin Server가 여러 개인 경우 쉼표로 구분하여 등록하면 된다.

spring.boot.admin.client.url=http://admin서버주소

Spring Boot Admin Server 메뉴 살펴보기

여기까지 진행하였으면 Server 설정과 Client 설정이 모두 끝났다.

이렇게 각각의 설정을 마친 후 서버를 띄우면 다음과 같이 여러 Client들을 모니터링할 수 있게 된다.

각각의 인스턴스를 선택하여 해당 인스턴스의 현재 상태를 다양하게 확인할 수 있다.

현재 인스턴스의 개요에서는 상세, 지표, 환경, 빈, 구성 속성, 스케줄 작업을 확인할 수 있고

 

Loggers에서는 현재 출력되는 Logger설정을 변경할 수 있다.
각 application의 /actuator/loggers/* 에 직접 POST 요청으로 Logger 설정을 변경하는 건 좀 불편하다.
Admin Server에선 클릭으로 바로 변경할 수 있어 편하다.

JVM에서는 스레드 덤프와 힙 덤프를 모니터링하고 다운로드할 수 있다.

매핑에서는 등록된 Controller들을 확인할 수 있다.

캐시에서는 캐시를 사용할 경우 정보를 확인할 수 있다.
내 경우 캐시를 만들어 쓰는 부분이 없어서 관련 내용은 확인할 수 없었다.


위에서 살펴본 내용들은 Spring Boot Actuator가 /actuator 를 통해 제공하는 내용들이다.
각 application의 /actuator 아래를 직접 호출하여 볼 땐 쉽게 파악하기 불편한 부분들이 있는데 Spring Boot Admin Server를 사용하면 UI가 제공되어 시각적으로 인지하기 편리하게 된다.
또한 여러 application의 정보를 한 곳에 모아서 확인할 수 있고 대시보드의 경우 비정상 인스턴스가 발생하면 바로 빨간 상태로 보여주기 때문에 인지하기가 쉽다.

다만 Spring Boot Admin Server의 경우 수집한 metric을 저장하여 시간대 별 변화를 제공하지 않기 때문에 한계가 있다.
좀 더 발전한 모니터링 시스템을 원하는 경우 Prometheus나 InfluxDB에 메트릭 정보를 저장하고 Grafana에서 보여줄 수도 있다.
만약 java spring actuator에 제한되지 않으려면 Telegraf나 fluentd를 사용하여 정보를 수집할 수도 있다.

이러한 선택은 시간이 흐르면 또 다른 대안이 나올 수도 있고 최선의 선택이 그때그때 마다 변화할 것이기 때문에 선택지가 변화하는 것에 대해 꾸준히 관심을 가지고 봐야 할 것 같다.

 

반응형
profile

파란하늘의 지식창고

@Bluesky_

도움이 되었다면 광고를 클릭해주세요