使用 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 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 Actuatorinfo
端点下可用。
<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
文件。
这是 的完整参数列表account-service
。
Spring Boot Admin 还提供了一些其他有趣的功能。在Trace部分,我们可以浏览带有日期、状态和方法信息的 HTTP 请求和响应历史记录。它可以通过路径片段过滤。
通过添加 Jolokia 依赖项,我们能够查看和更改日志记录部分中每个类别的日志级别。
我们可以为每个微服务实例收集配置详细信息。
在Journal选项卡中,有一个由 Spring Boot Admin 监控的所有服务的状态更改列表。
使用 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 入门教程