Spring Boot Admin的使用笔记

举报
JackieAtHome 发表于 2018/05/18 20:31:54 2018/05/18
【摘要】 当前Spring Boot Admin的最新版本为1.5.0。本文是相关的使用笔记。 更多精彩,来自http://www.jackieathome.net/

当前Spring Boot Admin的最新版本为1.5.0。本文是相关的使用笔记。

集成方法

方法一

Spring Boot Admin服务端作为单独的组件,微服务组件使用客户端通信库向Spring Boot Admin服务端上报数据。

  1. 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>
  2. Spring Boot Admin服务端的启动类。

    @EnableAdminServer@SpringBootApplicationpublic class Application {    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
  3. Spring Boot Admin服务端的配置文件application.yml

    server:
        port: 11002
  4. Spring Boot Admin客户端的软件依赖。修改pom.xml,增加如下内容。

    <dependency>
        <groupId>de.codecentric</groupId>
        <artifactId>spring-boot-admin-starter-client</artifactId>
        <version>1.5.0</version></dependency>
  5. Spring Boot Admin客户端的配置。修改application.yml,增加如下内容。

    spring:
        boot:
            admin:
                url: http://localhost:11002
    management:
        security: 
            enabled: false

方法二

Spring Boot Admin服务端作为单独的组件,使用Eureka来主动发现微服务组件,并获取数据。

  1. 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>
  2. Spring Boot Admin服务端的启动类。

    @EnableDiscoveryClient@EnableAdminServer@SpringBootApplicationpublic class Application {    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
  3. Spring Boot Admin服务端的配置文件application.yml

    server:
        port: 11002
    eureka:
        client:
            serviceUrl:
                defaultZone: http://localhost:8761/eureka/

方法三

Spring Boot Admin服务端与Eureka集成,使用Eureka来主动发现微服务组件,并获取数据。

  1. 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>
  2. Spring Boot Admin服务端的启动类。

    @EnableEurekaServer@EnableAdminServer@SpringBootApplicationpublic class Application {    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
  3. 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实现集群的能力,如下是启用的方法。

  1. 修改pom.xml,增加如下软件的依赖。

    <dependency>
        <groupId>com.hazelcast</groupId>
        <artifactId>hazelcast</artifactId></dependency>
  2. 增加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>

参考资料


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。