1. 程式人生 > >Spring Boot Admin 2.0 監控Spring Cloud服務(Finchley版本)

Spring Boot Admin 2.0 監控Spring Cloud服務(Finchley版本)

一、簡介

Spring Boot Admin 在Spring Boot Actuator 的基礎上提供簡介的視覺化WEB UI,用來管理Spring Boot應用程式的一個簡單的介面,提供如下的功能:

  • 顯示 name/id 和版本
  • 顯示線上狀態
  • Logging 日誌級別管理
  • MX beans 管理
  • Threads 會話和執行緒管理
  • Trace 應用請求跟蹤
  • 應用執行引數資訊,如:
  • Java 系統屬性
  • Java 環境變數屬性
  • 記憶體資訊
  • Spring 環境屬性

本文將以Spring Boot Admin 2.0 與 Eureka整合展示Spring Boot Admin 2.0 的使用。
下面我介紹一下使用到的相關應用:

服務 服務說明
eureka-server 8100 服務註冊與發現中心
config-server 8101 配置中心
codedict 8102 程式碼字典微服務(監控客戶端)
admin 8103 spring boot admin監控服務(監控服務端)

這裡我主要講解spring boot admin服務端與客戶端的搭建,服務註冊發現和配置中心的搭建不再做贅述。

二、Spring Boot Admin服務端搭建

1. 新增相關依賴

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <!--JMX-bean 管理-->
        <dependency>
            <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
        </dependency>

2. 啟動類

@EnableAdminServer
@EnableEurekaClient
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class AdminCustomApplication extends SpringBootServletInitializer {
  @Override
  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
    return builder.
sources(AdminCustomApplication.class); } public static void main(String[] args) { SpringApplication.run(AdminCustomApplication.class, args); } }

3. 安全控制

@Profile("secure")
@Configuration
public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
  private final String adminContextPath;

  public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
    this.adminContextPath = adminServerProperties.getContextPath();
  }

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
    successHandler.setTargetUrlParameter("redirectTo");

    http.authorizeRequests()
            .antMatchers(adminContextPath + "/assets/**").permitAll()
            .antMatchers(adminContextPath + "/login").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
            .logout().logoutUrl(adminContextPath + "/logout").and()
            .httpBasic().and()
            .csrf().disable();
  }
}

這裡為Spring Boot Admin配置了登入控制。

4. 配置檔案

#服務名
spring.application.name=admin
spring.cloud.config.profile=dev2
#配置上下文路徑
server.servlet.context-path=/admin
#註冊中心
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka-server/eureka

#為監控端點加字首,這樣才可以收集到監控資訊
#eureka.instance.metadata-map.management.context-path=/admin/actuator
#eureka.instance.health-check-url=http://localhost:${server.port}/admin/actuator/health
#eureka.instance.status-page-url=http://localhost:${server.port}/admin/actuator/info
#eureka.instance.home-page-url=http://localhost:${server.port}
eureka.instance.lease-renewal-interval-in-seconds=10
eureka.instance.health-check-url-path=/admin/actuator/health
eureka.client.registry-fetch-interval-seconds=5

eureka.instance.metadata-map.user.name=user
eureka.instance.metadata-map.user.password=password

#暴露actuator的所有端點
management.endpoints.web.exposure.include=*
#health endpoint是否必須顯示全部細節。預設情況下, /actuator/health 是公開的,並且不顯示細節
management.endpoint.health.show-details=always

#配置登入名,密碼和安全策略
spring.profiles.active=secure
spring.security.user.name=user
spring.security.user.password=password

#通過服務連線配置中心
#spring.cloud.config.discovery.enabled=true
#spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.uri = http://localhost:8080/config-server
#配置檔案獲取失敗快速返回
spring.cloud.config.failFast=true

spring.jmx.default-domain=admin

5. 啟動admin服務

登入介面
主介面

三、Spring Boot Admin 客戶端

1. 新增依賴

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

2. 配置檔案

#服務名
spring.application.name=codedict
spring.cloud.config.profile=dev2
#配置上下文路徑
server.servlet.context-path=/codedict
#註冊中心
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka-server/eureka

#為監控端點加字首,這樣才可以收集到監控資訊
eureka.instance.metadata-map.management.context-path=/codedict/actuator
eureka.instance.health-check-url=http://localhost:${server.port}/codedict/actuator/health
eureka.instance.status-page-url=http://localhost:${server.port}/codedict/actuator/info
eureka.instance.home-page-url=http://localhost:${server.port}

#Actuator 在 spring boot 2.0 版本後,只暴露了兩個端點,下面開啟所有端點
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=*

#通過服務連線配置中心
#spring.cloud.config.discovery.enabled=true
#spring.cloud.config.discovery.serviceId=config-server
spring.cloud.config.uri = http://localhost:8080/config-server
#配置檔案獲取失敗快速返回
spring.cloud.config.failFast=true

這裡只展示與本節內容相關的配置。

3. 檢視監控資訊

服務上線
監控資訊
監控資訊

其它詳細資訊可以參考官網