Spring Boot Admin with Spring Boot Actuator

이번 글에서는 spring boot admin 에 대해 다루어 보겠다. spring boot admin 은 spring boot 어플리케이션들을 모니터링하고 관리하기 위한 웹 어플리케이션이다. 각각의 어플리케이션은 client 로 간주되고 admin server 에 등록된다. spring boot actuator endpoints 만 열어두면 알아서 설정이 된다. 정말 쉽고 간편하다.


정리해볼 내용은 아래와 같다.

1. spring boot admin client 1개 구현 (with spring boot actuator)
2. spring boot admin server 1개 구현


spring boot admin client 는 임의로 api 하나를 가진 api server application 이다. 이 application 은 spring boot actuator 설정을 통해서 여러가지 endpoint 를 열어둔다.

또한 다른 하나의 application 은 spring boot admin server 이다. 


필수 dependency 는 actuator 와 admin-client 이다.
data-jpa 와 web 그리고 h2 임의의 api endpoint 를 만들기 위해 추가했다.


다음으로 yaml 파일을 보자. 
여기서 must 는 admin.client.url 이다.

1. spring.boot.admin.client.url 이다.
admin.server url 을 설정하는 것이다.

2. management.endpoints.web.exposure.include 는 내맘으로 "*" 모든 end points 를 열어주었다.


clinet application 의 마지막 임의로 만든 api 를 보자.
우선 Greeting 이라는 Entity 를 하나 만들었다. 
field 는 id, contents, createdTime 3가지가 전부이다.

  PathVariable 을 이용한 id 로 Greeting 단 건 조회하는 api end point 이다.

아래의 class 는 Response DTO 이다.

JpaRespository interface 를 상속받은 GreetingRepository 이다.

아래는 GreetingService 이다. findById 하나를 구현했다.

이제 spring boot admin client 와 관련된 설정은 모두 끝이 났다.

다음은 spring boot admin server 설정을 보자.
제일 중요한건 당연히 admin-server 이다.
web, security 는 보안을 위해서 추가했다.

다음은 yaml 파일이다.
server port 는 18080 이다. 위에서 먼저 설정한 client application 의 url 이 생각나는가? 바로 해당 admin server 를 가리키는 것이다.

security 설정은 admin-server 로그인을 위하여 설정했다. 물론 실제로 admin/admin 같은 취약한 조합은 안하는게 좋다. 

밑에 slack notify 는 admin_server 에 등록된 application 들의 상태가 Online/Offline 이 될 때 마다 자동으로 slack 으로 notification 을 보내줄 수 있다.

물론 custom notification 도 가능하지만, 이 글에서는 기본 기능만 보고 넘어가겠다.

아래에는 admin server 어플리케이션 접속 시 admin/admin 의 인증을 받기 위한 시큐리티 설정이다.

밑에 @EnableAdminServer 어노테이션이 보이는가? 이 어노테이션이 마법의 어노테이션이다. 이 어노테이션 하나로 admin server 의 기본적인 설정이 모두 끝난다.


이제 client 와 server 설정 모두 끝이났다.
그럼 돌려보자!

먼저 admin server 를 먼저 돌린다. port가 18080 으로 정상적으로 올라갔다.

다음은 admin client 을 올려보자. 맨 마지막줄에 Application registered itself 라는 로그를 볼 수 있다.


이제 그렇다면 http://127.0.0.1:18080 으로 접속한다. 인증이 되지 않았으므로, 시큐리티 설정에 의해 login 으로 리다이렉트 된다. 기존 yaml 에 설정한 admin/admin 을 통해 로그인한다.

admin-client 어플리케이션이 등록이 되어  있다!
dashboard 를 통해서 해당 어플리케이션에 들어가면 아래와 같이 많은 정보들을 확인할 수 있다. 이렇게 간편하게 설정에 비해 많은 기능을 지원해주고 있다.

그렇다면 해당 metric 은 어떻게 제공되고 있을까? 바로 admin client 에서 설정한 actuator 가 있기에 가능하다. client 어플리케이션의 path http://127.0.0.1:8080/actuator 로 들어가면 해당 client 어플리케이션의 자세한 Metric 정보들이 제공됨을 확인할 수 있다.


이번 글은 여기까지이다.

댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째