天天看點

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

Spring Boot Admin 是一個出色的工具,用于可視化 Spring Boot Actuator 公開的端點,并帶有健康檢查和應用程式詳細資訊。它可以輕松地與 Spring Cloud 內建,并且可以按其可以從 Eureka(或其他一些注冊和發現伺服器)系統資料庫中擷取的名稱對所有正在運作的微服務執行個體進行分組。

如果您必須管理由多個微服務組成的系統,則需要在統一地方收集所有相關資訊的強烈需求。這适用于我們通常使用 ELK 堆棧(Elasticsearch + Logstash + Kibana)時采集日志、追蹤名額(Zipkin)以及有關目前正在運作的所有應用程式執行個體的狀态的詳細資訊。如果您對有關 ELK 或 Zipkin 的更多詳細資訊感興趣,我推薦我之前的文章微服務內建SPRING CLOUD SLEUTH、ELK 和 ZIPKIN 進行監控-spring cloud 入門教程。

如果您正在使用 Spring Cloud Discovery,我有好消息要告訴您。雖然 Spring Boot Admin 是由 Codecentric 公司建立的,但它與 Spring Cloud 完全內建。它包括最流行的服務注冊和發現伺服器,如 Zookeeper、Consul 和 Eureka。建立管理伺服器執行個體很容易。您隻需要設定 Spring Boot 應用程式并将注釋添加

@EnableAdminServer

到主類中。

@SpringBootApplication
@EnableDiscoveryClient
@EnableAdminServer
@EnableAutoConfiguration
public class Application {

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

}
           

在 GitHub 上照常提供的示例應用程式中,我們通過添加 annotation 啟用了 Eureka 的發現

@EnableDiscoveryClient

。在 Eureka 中不需要注冊 admin 服務,因為我們隻需要收集所有注冊微服務的資訊。也可以将 Spring Boot Admin 包含到您的 Eureka 伺服器執行個體中,但應更改管理上下文(屬性

spring.boot.admin.context-path

)以防止與 Eureka UI 發生沖突。這是

application.yml

具有獨立管理服務的示例的配置檔案。

eureka:
  client:
    registryFetchIntervalSeconds: 5
    registerWithEureka: false
    serviceUrl:
      defaultZone: ${DISCOVERY_URL:http://localhost:8761}/eureka/
  instance:
    leaseRenewalIntervalInSeconds: 10

management:
  security:
    enabled: false
           

這是包含在

pom.xml

.

<dependencies>
   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-eureka</artifactId>
   </dependency>
   <dependency>
      <groupId>de.codecentric</groupId>
      <artifactId>spring-boot-admin-server</artifactId>
      <version>1.5.1</version>
   </dependency>
   <dependency>
      <groupId>de.codecentric</groupId>
      <artifactId>spring-boot-admin-server-ui</artifactId>
      <version>1.5.1</version>
   </dependency>
</dependencies>
           

現在您隻需要使用

java -jar admin-service.jar

. UI 儀表闆在http://localhost:8080下可用,如下圖所示。服務按名稱分組,并提供有關每個微服務正在運作的執行個體數量的資訊。

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

在用戶端,我們必須在下面添加這兩個依賴項。如前所述,需要 Spring Boot Actuator,Jolokia 庫用于更進階的功能,如 JMX MBeans 和日志級别管理。

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

要顯示下圖中可見的資訊,例如版本、下面的 Git 送出詳細資訊,我們需要為每個應用程式添加兩個 Maven 插件到 .gitignore 中

pom.xml

。他們首先将生成

build-info.properties

包含最重要的應用程式資訊的檔案。第二個包含包含

git.properties

有關上次送出的所有資訊的檔案。結果在 Spring Boot Actuator

info

端點下可用。

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
      <mainClass>com.microservices.account.Application</mainClass>
      <addResources>true</addResources>
   </configuration>
   <executions>
      <execution>
         <goals>
            <goal>build-info</goal>
            <goal>repackage</goal>
         </goals>
         <configuration>
            <additionalProperties>
            <java.target>${maven.compiler.target}</java.target>
            <time>${maven.build.timestamp}</time>
            </additionalProperties>
         </configuration>
      </execution>
   </executions>
</plugin>

           

我在示例應用程式

account-service

customer-service

. 使用指令在不同端口上運作它們的一些執行個體

java -jar -DPORT=[port] [service-name].jar

。版本和資訊列中可見的資訊取自

build-info.properties

git.properties

檔案。

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

這是 的完整參數清單

account-service

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

Spring Boot Admin 還提供了一些其他有趣的功能。在Trace部分,我們可以浏覽帶有日期、狀态和方法資訊的 HTTP 請求和響應曆史記錄。它可以通過路徑片段過濾。

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

通過添加 Jolokia 依賴項,我們能夠檢視和更改日志記錄部分中每個類别的日志級别。

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

我們可以為每個微服務執行個體收集配置詳細資訊。

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

在Journal頁籤中,有一個由 Spring Boot Admin 監控的所有服務的狀态更改清單。

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

使用 Zuul、Ribbon、Feign、Eureka 和 Sleuth、Zipkin 建立簡單spring cloud微服務用例-spring cloud 入門教程

微服務內建SPRING CLOUD SLEUTH、ELK 和 ZIPKIN 進行監控-spring cloud 入門教程

使用Hystrix 、Feign 和 Ribbon建構微服務-spring cloud 入門教程

使用 Spring Boot Admin 監控微服務-spring cloud 入門教程

基于Redis做Spring Cloud Gateway 中的速率限制實踐-spring cloud 入門教程

內建SWAGGER2服務-spring cloud 入門教程

Hystrix 簡介-spring cloud 入門教程

Hystrix 原理深入分析-spring cloud 入門教程 

使用Apache Camel建構微服務-spring cloud 入門教程

內建 Kubernetes 來建構微服務-spring cloud 入門教程

內建SPRINGDOC OPENAPI 的微服務實踐-spring cloud 入門教程

SPRING CLOUD 微服務快速指南-spring cloud 入門教程

基于GraphQL的微服務實踐-spring cloud 入門教程

最火的Spring Cloud Gateway 為經過身份驗證的使用者啟用速率限制實踐-spring cloud 入門教程

繼續閱讀