Spring Boot에서 Actuator 및 Spring Actuator Admin 설정 방법

 

Actuator은 애플리케이션 관련 데이터 및 모니더링 정보를 제공해준다.

단순히 Actuator만 사용한다면

 

 

JSON 형식 혹은 XML로 확인할 수 있다. 하지만 GUI로 보고 싶다면 Actuator 기반 UI인 Spring Boot Admin을 사용하면 된다. (오픈소스)

 

 

자세한 내용은 백기선님의 "우아한 스프링 부트"를 참고하길 바란다. 

www.youtube.com/watch?v=z0EaPjF3pCQ

 

서버 애플리케이션

우선 admin 전용 서버를 띄우기 위해 프로젝트를 생성해야 한다. 멀티모듈로 해도되지만 필자는 그냥 start.spring.io를 통해서 프로젝트를 하나 생성했다.

라이브러리로 Spring Boot Admin (Server)를 추가해준다.

 

※ 주의할점

이것 때문에 약간 헤맸는데, 클라이언트 애플리케이션의 버전이랑 똑같은 버전으로 맞춰서 만들어줘야 한다.

필자의 애플리케이션 클라이언트는 2.3.X 였는데 admin용 애플리케이션을 2.4.X로 만들어서 작동이 되지 않았다.

 

@SpringBootApplication
@EnableAdminServer
public class MarketAdminServerApplication {

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

 

main메소드에 @EnableAdminServer를 붙여준다.

 

plugins {
	id 'org.springframework.boot' version '2.3.9.RELEASE'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'com.soap'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

ext {
	set('springBootAdminVersion', "2.3.1")
}

dependencies {
	implementation 'de.codecentric:spring-boot-admin-starter-server'
	//implementation group: 'de.codecentric', name: 'spring-boot-admin-server', version: '2.3.1'
	//implementation group: 'de.codecentric', name: 'spring-boot-admin-server-ui', version: '2.3.1'

	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}

dependencyManagement {
	imports {
		mavenBom "de.codecentric:spring-boot-admin-dependencies:${springBootAdminVersion}"
	}
}

test {
	useJUnitPlatform()
}

몇몇 블로그를 보면 ui도 따로 추가하는 곳도 있던데 Spring 프로젝트 생성시 추가했던 라이브러리에 ui도 이미 포함이 되어 있으므로 따로 추가할 필요 없다. 추가로 gradle 수정없이 생성된 그대로 사용하면 된다.

 

server.port=8090

포트가 겹칠수도 있으므로 수정해준다.

 

클라이언트 애플리케이션

dependencies {
	...
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation group: 'de.codecentric', name: 'spring-boot-admin-starter-client', version: '2.3.1'
    compile("org.springframework.boot:spring-boot-starter-actuator")
   	...
}

gradle 설정에서 위의 3개를 추가해준다. 서버에서의 설정한 admin-server의 버전이 2.3.1 이므로 클라이언트 애플리케이션에서도 맞춰준다.

 

spring:
  boot:
    admin:
      client:
        auto-registration: true
        url: http://localhost:8090/


management:
  endpoint:
    health:
      show-details: always
  endpoints:
    web:
      exposure:
        include: "*"

.yml 설정에서 위와같이 추가해준다. 필수 설정은 spring.boot.admin.client.url과 endpoints.web.exposure.include이다. url은 admin용 서버의 포트로 설정하면 된다.

 

※ include의 아스테리카(*)양 옆에 더블쿼터를 꼭 넣어줘야 한다!!

 

 

 

서버 url로 접속하면 정상적으로 들어가서 확인할 수 있다.

 

 

참고

twofootdog.tistory.com/22

andole98.github.io/spring/spring-boot-admin/#

dailyheumsi.tistory.com/186

velog.io/@neptunes032/Spring-Boot-Actuator-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%84%9C-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81%ED%95%98%EA%B8%B0