简介
SpringBoot应用可以通过Actuator来暴露应用运行过程中的各项指标,Spring Boot Admin通过这些指标来监控SpringBoot应用,然后通过图形化界面呈现出来。
Spring Boot Admin不仅可以监控单体应用,还可以和Spring Cloud的注册中心相结合来监控微服务应用。
SpringBootAdmin是C/S架构,client端应用需要注册到server端,需要引入spring-boot-admin-starter-client,但是在SpringCloud微服务架构中,可以通过服务发现来注册,此时client的配置是非必须的。
SpringBootAdmin并不是Spring官方的项目,它是一家欧洲公司codecentric的开源项目。github地址:https://github.com/codecentric/spring-boot-admin
下面看几张server端的截图:
功能和特性
SpringBootAdmin主要是围绕Actuator来展开,主要为开发运维人员提供服务监控、
服务管理和报警。
服务监控
应用上、下线状态
监控应用运行过程中的概览信息;
度量指标信息,比如JVM、Tomcat及进程信息;
环境变量信息,比如系统属性、系统环境变量以及应用配置信息;
查看所有创建的Bean信息;
查看应用中的所有配置信息;
查看JVM信息;
查看可以访问的Web端点;
查看HTTP跟踪信息
......
服务管理
- 动态日志级别更改
- ......
报警
- 发送监控邮件
- 集成各种消息通知
- ......
服务端
client注册到SpringBootAdmin-Server有两种方式,一种是client引入admin-client依赖,并在配置文件配置admin-server地址;一种是将爱大米将client和admin-server注册到相同的注册中心,通过服务发现将client注册到SpringBootAdmin-Server。本文中主要是演示第二种。
pom
<!-- admin-server -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${spring.boot.admin.version}</version>
</dependency>
配置
通过@EnableAdminServer注解开启Admin-Server,@EnableDiscoveryClient注解是将admin-server注册到nacos注册中心,admin-server自己也是一个可被监控的服务。
集群
SpringBootAdmin-Server 支持通过Hazelcast来实现集群的复制。本文档不展开讨论,一般来说SpringBootAdmin为非功能性服务,是否集群其实也不太重要。
客户端
声明式客户端
pom
<!-- SpringBoot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- spring-boot-admin-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.4.3</version>
</dependency>
配置
spring.boot.admin.clietn.url:配置admin-server的地址
management.endpoints:actuator暴露的client端程序监控端点
通过注册中心发现
客户端仅需要添加Actuator的starter依赖,然后保证当前微服务应用和Admin-Server注册到同一注册中心即可。
若client服务添加了 context-path ,springBootAdmin-server端是无法通过注册中心监控的,解决办法是在Client端的配置文件中增加如下配置:
spring:
cloud:
discovery:
server-addr: 127.0.0.1:8884
metadata:
management:
context-path: ${server.servlet.context-path}/actuator