Spring Boot Admin用来管理和监控Spring Boot应用程序。
spring-boot-starter-actuator是Spring Boot提供的一个包,可以对系统健康情况进行监控,Spring Boot Admin是在spring-boot-starter-actuator基础上,开发的一套功能强大的监控系统。
Spring Boot Admin分为Server端和Client端,Client端通过Http向Server注册,也可以结合Spring Cloud Eureka向Eureka Server注册。Spring Boot Admin提供了UI界面,用于管理和监控。
本次通过三个项目来学习使用Spring Boot Admin:Spring Cloud Eureka Server,Spring Boot Admin Server和Spring Boot Admin Client。Spring Boot Admin Server和Spring Boot Admin Client向Spring Cloud Eureka Server注册,通过Spring Boot Admin Server进行监控。
1.Spring Cloud Eureka Server
采用之前搭建的Spring Cloud Eureka Server
2.Spring Boot Admin Server
新建项目Spring Boot Admin Server,pom文件引入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-eurekaartifactId>
dependency>
<dependency>
<groupId>de.codecentricgroupId>
<artifactId>spring-boot-admin-serverartifactId>
<version>1.5.1version>
dependency>
<dependency>
<groupId>de.codecentricgroupId>
<artifactId>spring-boot-admin-server-uiartifactId>
<version>1.5.1version>
dependency>
<dependency>
<groupId>org.jolokiagroupId>
<artifactId>jolokia-coreartifactId>
dependency>
dependencies>
引入spring-cloud-starter-eureka,向Eureka Server进行注册,引入spring-boot-admin-server来构建Spring Boot Admin Server功能,引入spring-boot-admin-server-ui来使用图形化界面。界面中还需要与JMX-Beans进行交互,所以再引入jolokia-core。
由于spring-boot-starter-actuator在spring-boot-admin-server中已经包含了,所以不用再次引用。
接下来配置application.yml:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
management:
security:
enabled: false
server:
port: 5000
logging:
file: "logs/boot-admin-sample.log"
spring:
application:
name: service-admin-server
boot:
admin:
routes:
endpoints: env,metrics,dump,jolokia,info
配置文件中指定Eureka Server的地址,来向Eureka Server注册。指定服务名称为service-admin-server,启动端口为5000。log文件路径为logs/boot-admin-sample.log。
由于Spring Boot 1.5版本之后,Actuator中所有的接口都默认开启了安全验证,为了方便,先把安全验证关掉,配置management.security.enabled: false。
在resource目录下再新建logback-spring.xml,配置logback的JMXConfigurator:
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<jmxConfigurator/>
configuration>
新建启动类AdminServerApplication:
@SpringBootApplication
@EnableEurekaClient
@EnableAdminServer
public class AdminServerApplication {
public static void main(String[] args) {
SpringApplication.run(AdminServerApplication.class, args);
}
}
@EnableEurekaClient注解,说明这是一个Eureka Client,向Eureka Server注册,@EnableAdminServer注解声明这是一个Admin Server。
到这一步,Spring Boot Admin Server就创建完成了。接下来创建Spring Boot Admin Client。
Spring Boot Admin Client
新建Spring Boot Admin Client项目,Spring Boot Admin Client既可以向Spring Boot Admin Server注册,也可以向Eureka Server注册,这里,我们直接向Eureka Server注册。pom文件引入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloudgroupId>
<artifactId>spring-cloud-starter-eurekaartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
dependencies>
配置文件:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
management:
security:
enabled: false
server:
port: 5100
logging:
file: "logs/boot-client-sample.log"
spring:
application:
name: service-admin-client
启动类:
@SpringBootApplication
@EnableEurekaClient
public class AdminClientApplication {
public static void main(String[] args) {
SpringApplication.run(AdminClientApplication.class, args);
}
}
其实,这里的AdminClient,已经和Spring Boot Admin关系不大了,只是依赖了spring-cloud-starter-eureka,向Eureka Server进行注册。
由于Spring Boot Admin Server注册到了Eureka Server上,所以Spring Boot Admin Server会可以定时拉取服务注册列表,监控Eureka Server上注册的服务。
启动三个项目,在浏览器输入http://localhost:5000,可以看到Spring Boot Admin的界面。
界面中,监控到两个实例,service-admin-server和service-admin-client。点击Details,可以看到更加详细的信息。
Spring Boot Admin 可以监控实例的环境信息,指标信息,日志信息,JMX等。
参考资料:
1.《Spring Cloud与Docker微服务架构实战》 周立 著
2.《Spring Cloud微服务实战》 翟永超 著
3.《深入理解Spring Cloud与微服务构建》 方志朋 著