微服務系列之-Admin集成

一.介紹

Spring Boot Admin是一個開源社區項目,用於管理和監控SpringBoot應用程序。 應用程序作爲Spring Boot Admin Client向爲Spring Boot Admin Server註冊(通過HTTP)或使用SpringCloud註冊中心(例如Eureka,Consul)發現。 UI是的AngularJs應用程序,展示Spring Boot Admin Client的Actuator端點上的一些監控。常見的功能或者監控如下:

  • 顯示 name/id 和版本號
  • 顯示在線狀態
  • Logging 日誌級別管理
  • JMX beans 管理
  • Threads 會話和線程管理
  • Trace 應用請求跟蹤
  • 應用運行參數信息,如:
    Java 系統屬性
    Java 環境變量屬性
    內存信息
    Spring 環境屬性

二.服務端集成

  1. 依賴
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>guava</artifactId>
                    <groupId>com.google.guava</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>HdrHistogram</artifactId>
                    <groupId>org.hdrhistogram</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.0.3</version>
        </dependency>

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

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

說明:
1)eureka集成是爲了以Eureka爲註冊中心,從Eureka獲取相關服務信息。
2)security集成是爲了加上Admin登錄認證。
3)admin-starter爲服務端組件。
4)安全配置適配器依賴必須。

  1. 關鍵配置信息
spring:
  # 用戶登錄Admin賬戶
  security:
    user:
      name: "admin"
      password: "123456"

eureka:
  client:
    #表示eureka client間隔多久去拉取服務註冊信息,默認爲30秒
    registryFetchIntervalSeconds: 5
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
  instance:
    #表示eureka client發送心跳給server端的頻率,默認爲30秒
    leaseRenewalIntervalInSeconds: 10
    #健康檢查的地址(依賴spring-boot-starter-actuator)
    health-check-url-path: /actuator/health
    metadata-map:
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}

強調:上面註釋講解部分很關鍵,上面設置我們能每5秒從Eureka服務端獲取微服務模塊信息。

Eureka 中的 metadataMap 是專門用來存放一些自定義的數據,當註冊中心或者其他服務需要此服務的某些配置時可以在 metadataMap 裏取。實際上,每個 instance 都有各自的 metadataMap,map 中存放着需要用到的屬性。例如,上面配置中的 eureka.instance.metadata-map.user.name,當這個服務成功註冊到 Eureka 上,Spring Boot Admin 就會取拿到這個 instance,進而拿到 metadataMap 裏的屬性,然後放入請求頭,向此服務發送請求,訪問此服務的 Actuator 開放的端點。

  1. 安全校驗設置
@Slf4j
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
    private final String adminContextPath;

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

    @Override
    protected void configure(HttpSecurity http) throws Exception
    {
        log.info("WebSecurityConfig|configure|進入頁面攔截處理部分");
        // @formatter:off
        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();
    }
}

三.註冊中心

用之前搭建的即可 端口爲 8761
qy-eureka-server 註冊中心
微服務系列之-Eureka Server集成

四.客戶端集成

  1. 沒有集成Eureka
    主要依賴:
<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.0.1</version>
</dependency>

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

主要配置:

spring:
  security:
    user:
      name: "admin"
      password: "123456"
  boot:
    admin:
      client:
        url: http://localhost:8086
        username: "admin"
        password: "123456"
        instance:
          metadata:
            user.name: ${spring.security.user.name}
            user.password: ${spring.security.user.password}
eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10 #表示eureka client發送心跳給server端的頻率,默認爲30秒
    health-check-url-path: /actuator/health #健康檢查的地址(依賴spring-boot-starter-actuator)
  client:
    registryFetchIntervalSeconds: 5 #表示eureka client間隔多久去拉取服務註冊信息,默認爲30秒
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: ALWAYS

啓動類:

@Slf4j
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication
{
    public static void main( String[] args )
    {
        ApplicationContext context = SpringApplication.run(EurekaClientApplication.class, args);
        String serverPort = context.getEnvironment().getProperty("server.port");
        log.info("後臺管理服務客戶端啓動成功! Swagger2: http://127.0.0.1:".concat(serverPort));
    }
}
  1. 集成Eureka
    我們可以去掉admin-starter-client依賴,因爲微服務都在配置中心註冊,可以通過註冊中心獲取註冊在Eureka的相關微服務信息。
    在這裏插入圖片描述

五.結果驗證

依次啓動
qy-eureka-server
qy-admin-server
qy-eureka-client
在這裏插入圖片描述
進入登錄頁面,輸入賬戶以及密碼登錄Admin
在這裏插入圖片描述在這裏插入圖片描述服務正常顯示
在這裏插入圖片描述至此我們繼承Admin服務監控模塊成功!!!

項目集成地址:謙奕爸爸-微服務集成項目

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章