天天看点

使用 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 入门教程

继续阅读