java分散式微服務雲架構- SrpingBoot Admin

gung123發表於2020-03-10

一、SrpingBoot Admin 介紹

Spring Boot Admin 是一個開源社群專案,用於管理和監控 SpringBoot 應用程式,展示Spring Boot Admin Client 的 Actuator 端點上的一些監控資訊。

瞭解springcloud架構可以加求求:三五三六二四七二五九

它為應用程式提供以下功能:


顯示應用健康狀況

關注並下載日誌檔案

檢視jvm系統和環境屬性

檢視Spring Boot配置屬性

支援Spring Cloud的postable / env-和/ refresh-endpoint

輕鬆的日誌級管理


二、SrpingCloud Kubernetes 介紹

Spring Cloud Kubernetes 提供 Kubernetes 環境下服務發現的 Spring Cloud 通用介面實現。主要目的是促進在 Kubernetes 中執行的 Spring Cloud 和 Spring Boot 應用程式的整合。


這裡我們主要用 SpringCloud Kubernetes 來為 SpringBoot Admin 提供 Kubernetes 環境下的服務發現。

三、建立 SpringBoot Admin 應用

建立 SpringBoot Admin 應用,且引入 SpringCloud Kubernetes 作為服務發現。


Maven 引入相關依賴

在 Maven 中引入 “spring-boot-admin-starter-server” 與 “spring-cloud-kubernetes-discovery” 依賴。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="
         xsi:schemaLocation="
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>club.mydlq</groupId>
    <artifactId>springboot-admin-k8s</artifactId>
    <version>0.0.2</version>
    <name>springboot-admin-k8s</name>
    <description>demo</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--SpringBoot Admin-->
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.1.5</version>
        </dependency>
        <!--SpringCloud Kubernetes-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-kubernetes-discovery</artifactId>
            <version>1.0.2.RELEASE</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

配置 application 檔案

加上兩個引數:

  • spring.cloud.kubernetes.discovery.primaryPortName:
  • spring.cloud.kubernetes.discovery.serviceLabels:
server:
  port: 8080
  
management:
  server:
    port: 8081                          #---指定監控資料埠為8081,避免和 server.port 一致產生風險
  endpoints:
    web:
      exposure:
        include: "*"
spring:
  application:
    name: springboot-admin-k8s
  cloud:
    kubernetes:
      discovery:
        primaryPortName: management     #---按設要監控 Service 的埠名稱
        serviceLabels:
          admin: enabled                #---設定要監控 Service 的 Label 標籤

啟動類

需要加上四個註解:


@SpringBootApplication:開啟 SpringBoot 相關注解,會自動配置相關資訊。

@EnableDiscoveryClient:開啟 Spring服務發現機制。

@EnableAdminServer:開啟 SpringBoot Admin。

@EnableScheduling:開啟定時任務,不加此註解服務發現不會執行定時重新整理。

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableDiscoveryClient
@EnableAdminServer
@EnableScheduling
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952307/viewspace-2679481/,如需轉載,請註明出處,否則將追究法律責任。

相關文章