반응형
Spring Boot Actuator를 통해 어플리케이션의 JVM, JMX, 메모리, GC 등 health정보를 가져올 수 있다.
(http://localhost:8080/actuator 호출 시 HATEOAS로 정보 가져올 수 있다.)
여기에 Spring Boot Admin을 이용하여, Auctuator 설정된 어플리케이션들을 웹에서 번에 모니터링/관리 할 수 있다.
Admin(Server) 측
의존성
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>2.2.2</version>
</dependency>
- 스프링 부트 버전이 2.2.x 일 때 스프링 부트 어드민은 2.2.0으로 잡아야 한다. 다른 버전으로 구성하면
adminHandlerMapping
빈을 생성할 때 스택오버플로 예외가 발생한다. - 현재(2021/06) 시점에선 Boot Admin Start Server는 Boot 버전 2.3.X 버전까지만 적용이 가능하다
- (Boot 버전은 2.5.X까지 릴리즈 된 상황)
Application.yml
server.port: 8000
spring.boot.admin.notify:
slack:
enabled: true
webhook-url:
username: admin
message: "*#{instance.registration.name}* (#{instance.id}) is *#{event.statusInfo.status}*"
ms-teams:
enabled: false
webhook-url:
- http://IP:8000 으로 clent에서 등록하면 해당 URI에서 모니터링이 가능하다
- Slack / Teams 등과 같은 메신저 혹은 이메일로 장애 알람을 받을 수 있다.
logback-spring.xml
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy:MM:dd HH:mm:ss.SSS} %-5level --- [%thread] %logger{35} : %msg %n</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<appender name="RollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/admin.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/admin_%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy:MM:dd HH:mm:ss.SSS} %-5level --- [%thread] %logger{35} : %msg %n</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="RollingFileAppender" />
</root>
- 콘솔로그를 찍을 수 있도록 간단한 설정
Security
Spring Security를 의존받아, 로그인 기능을 사용하는것이 일반적이다 (여기선 생략하도록 하겠다.)
로그인 정보는 Client쪽 설정(username)에서 계정정보를 추가할 수 있다.
Application
@EnableAdminServer // admin설정을 추가하여 서버기능을 수행할 수 있도록 한다.
@SpringBootApplication
public class TasAdminApplication {
public static void main(String[] args) {
SpringApplication.run(TasAdminApplication.class, args);
}
}
Actuator(Clent 측)
의존성
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.2.0</version>
</dependency>
- Actuator와 Client 설정을 추가
- Web을 의존받아야 Server에서 Client의 Autuator정보를 가져올 수 있다
application.yml
spring.boot.admin.client:
url: #server URI
auto-registration: true
username: #Security계정 정보
instance:
name: Client
prefer-ip: true
metadata:
key: value
management.endpoints:
web:
exposure.include: "*" # 엔드포인트 노출 종류
base-path: /actuator # 엔드포인트 url
management.endpoint:
health.show-details: always # 상세 내역 유무
info: # /actuator/info 에 노출할 기본적인 정보
contact:
email: xxx@xxx.com
phone: 01012345678
- client 설정으로 server에 연결할 수 있고, instance 정보를 통해 server에서 어떤 데이터로 노출될 것인지 설정
- management 설정으로 어떤 데이터를 가져올 것인지 설정
이미지
만약 netflix-eureka를 사용하고 있다면,
Admin을 eureka에 등록하기만 해도
Admin스스로 eureka에서 Client를 찾아서 등록하기 때문에
Client 단 별도의 설정이 필요없다.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
728x90
반응형
'스프링 > SpringBoot' 카테고리의 다른 글
SpringBoot (0) | 2021.02.09 |
---|
댓글