Spring Boot Admin的使用笔记
当前Spring Boot Admin的最新版本为1.5.0。本文是相关的使用笔记。
集成方法
方法一
Spring Boot Admin服务端作为单独的组件,微服务组件使用客户端通信库向Spring Boot Admin服务端上报数据。
Spring Boot Admin服务端的软件依赖。修改
pom.xml
,增加如下内容。<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId> <version>1.5.0</version></dependency><dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>1.5.0</version></dependency>
Spring Boot Admin服务端的启动类。
@EnableAdminServer@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Spring Boot Admin服务端的配置文件
application.yml
。server: port: 11002
Spring Boot Admin客户端的软件依赖。修改
pom.xml
,增加如下内容。<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>1.5.0</version></dependency>
Spring Boot Admin客户端的配置。修改
application.yml
,增加如下内容。spring: boot: admin: url: http://localhost:11002 management: security: enabled: false
方法二
Spring Boot Admin服务端作为单独的组件,使用Eureka来主动发现微服务组件,并获取数据。
Spring Boot Admin服务端的软件依赖。修改
pom.xml
,增加如下内容。<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId> <version>1.5.0</version></dependency><dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>1.5.0</version></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- 向Eureka注册 --><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId></dependency>
Spring Boot Admin服务端的启动类。
@EnableDiscoveryClient@EnableAdminServer@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Spring Boot Admin服务端的配置文件
application.yml
。server: port: 11002 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/
方法三
Spring Boot Admin服务端与Eureka集成,使用Eureka来主动发现微服务组件,并获取数据。
Spring Boot Admin服务端的软件依赖。修改
pom.xml
,增加如下内容。<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId> <version>1.5.0</version></dependency><dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>1.5.0</version></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>
Spring Boot Admin服务端的启动类。
@EnableEurekaServer@EnableAdminServer@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Spring Boot Admin服务端的配置文件
application.yml
。server: port: 11001 eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ spring: boot: admin: context-path: /admin
总结
方案一,需要为每个微服务组件增加客户端依赖,虽然Jar文件不大,不会占用太多空间,但毕竟多了一些配置,使用相对不那么方便。
方案二,基于Eureka提供的服务发现能力获取当前活跃的微服务实例清单,各类微服务上不需要增加软件依赖以及配置,相对方案一似乎要简单一些。
方案三,在方案二的基础上,Eureka和Spring Boot Admin Server合并为同一个组件,减少了组件的数量,同时没有引入新的依赖,应该也是一种比较好的方案。
高级特性
版本号
默认情况下,构建插件spring-boot-maven-plugin
只有一个执行目标repackage
,通常情况下这已经足够达成目标。为了在Spring Boot Admin的管理界面看到微服务组件的版本号,可以利用插件spring-boot-maven-plugin
提供的另外一个目标build-info
达成这一目的。如下是配置样例。
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>build-info</goal> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins></build>
JMS特性
修改pom.xml
,增加如下依赖。
<dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId></dependency>
日志级别的控制
编辑logback-spring.xml
,增加<jmxConfigurator/>
,如下是完整的样例。
<?xml version="1.0" encoding="UTF-8"?><configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <jmxConfigurator/></configuration>
集群
Spring Boot Admin基于Hazelcast
实现集群的能力,如下是启用的方法。
修改
pom.xml
,增加如下软件的依赖。<dependency> <groupId>com.hazelcast</groupId> <artifactId>hazelcast</artifactId></dependency>
增加
HazelcastConfig
类型的Bean对象。如下是样例。@EnableDiscoveryClient@EnableAdminServer@SpringBootApplicationpublic class Application { @Bean public Config hazelcastConfig() { return new Config().setProperty("hazelcast.jmx", "true") .addMapConfig(new MapConfig("spring-boot-admin-application-store").setBackupCount(1) .setEvictionPolicy(EvictionPolicy.NONE)) .addListConfig(new ListConfig("spring-boot-admin-event-store").setBackupCount(1).setMaxSize(1000)); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
故障通知
以邮件通知为例,介绍使用方法。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>
spring: mail: host: smtp.example.com boot: admin: notify: mail: to: admin@example.com
集成熔断面板
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui-hystrix</artifactId> <version>1.5.0</version></dependency>
spring.boot.admin.routes.endpoints: env,metrics,trace,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents,hystrix.stream
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui-turbine</artifactId> <version>1.5.0</version></dependency>
spring: boot: admin: turbine: clusters: default location: turbine
集成登录控制
<dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui-login</artifactId> <version>1.5.0</version></dependency>
参考资料
- 点赞
- 收藏
- 关注作者
评论(0)