본문 바로가기
Spring/Spring Boot

Spring boot admin

by 아이티.파머 2020. 6. 22.
반응형

Spring boot admin

스프링 어플리케이션에 대한 모니터링 서비스 spring의 actuator 정보를 보고 모니터링을 표시하여 준다.

구성

  • Spring Boot Monitoring Server
  • Spring Boot Application

이렇게 두가지로 구성하며 BootApplication은 Client 역할을 담당(Multiple). Monitoring은 Server를 담당한다.

1. Spring Boot Monitoring Server 구성

1.1 spring-boot-admin-starter-server 추가

pom.xml 에 디펜던시 추가 라이브러리 를 추가한다.

 

<properties>
    <java.version>1.11</java.version>
    <spring-boot-admin.version>2.2.3</spring-boot-admin.version>
    <spring-cloud.version>Hoxton.SR5</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-dependencies</artifactId>
            <version>${spring-boot-admin.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

1.2 application.yml 설정

server:
  port: 9000

다른포트와 충돌이 날수 있음으로 port만 변경한다.

 

 

1.3 BootApplication

@EnableAdminServer 을 활성화 시켜 준다. 이로서 admin server는 간단편하게 설정 완료되었다.

 

package com.skan.farm;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * <pre>
 * Description :
 *
 *
 * </pre>
 *
 * @author skan
 * @version Copyright (C) 2020 by CJENM|Mezzomedia. All right reserved.
 * @since 2020-06-04
 */
@SpringBootApplication
@EnableAdminServer
public class MonitoringApplication {

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

 

2. Spring Boot Application (Client) 구성

모니터링 대상인 Application에서 앞서 설치한 모니터링 서버의 정보를 입력해준다.

2.1 spring-boot-admin-starter-client 추가 디펜던시 라이브러리를 pom.xml 에 추가 시켜 준다.

 

 

1.2 client application.yml 설정

 

admin 모니터링 서버에서 접근 가능 하도록 endpoint를 모두 허용하여 열어준다. 스프링 시큐리티 설정을 한경우엔 시큐리티 설정과 클라이언트에 비밀번호를 넣어줘 접근이 가능 하도록 한다.

 

<그림 - 1 인스턴스 목록 >

<그림-2 데시보드 화면>

데시보드 화면을 통해 실시간 로그, JVM 정보를 확인 할 수 있다.

3. Spring Boot Admin Security

클라이언트 어플리케이션에서 spring security를 사용 중이라면 각 클라이언트에서 boot admin 으로 접속시 인스턴스 명을 적어주게 되는데 이때 메타데이터 안에 user.name 과 user.id를 셋팅 함으로 admin-server 에서 admin-client로 접근 할 수 있게 된다.

액추에이터의 엔트포인터도 admin boot 에서 접속 가능하도록 모두 허용으로 한다.

 

spring:
  profiles:
    active: local
  boot:
    admin:
      client:
        url: http://localhost:9000
        #username: admin monitoring server 의 id
        #password: admin monitoring server 의 password
        instance:
          name: it-farm-client   #(어플리케이션 명)
          metadata: # 나의 어플리케이션 (스프링 시큐리티 )로그인 정보
            user.name: admin
            user.password: 1
  security:
    user:
      name: admin
      password: 1

# 어드민에서 모니터링 가능 하도록 엔드포인트도 모두 열어 줄것
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always
반응형