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로 접속하면 정상적으로 들어가서 확인할 수 있다.
참고
andole98.github.io/spring/spring-boot-admin/#
'Tech > Spring' 카테고리의 다른 글
단위 테스트를위한 ReflectionTestUtils (1) | 2021.03.23 |
---|---|
Springboot + GCP Cloud Storage 연동(파일 업로드, 다운로드) (0) | 2021.03.22 |
Google 소셜 로그인 Google API 클라이언트 라이브러리 + GoogleIdTokenVerifier 사용하는 방법 (4) | 2021.03.15 |
Spring Boot Validation 순서 정하기 & 테스트 코드 (4) | 2021.03.15 |
SpringBoot에서 HttpOnly 쿠키방식을 이용한 refreshToken 발급 (0) | 2021.02.27 |