更新时间:2019年07月26日 11时10分19秒 来源:黑马程序员论坛
Spring Boot Admin 的使用详解 一、前言 Spring Boot Admin 用于监控基于 Spring Boot 的应用。官方文档在这里(v1.3.4):《Spring Boot Admin Reference Guide》 二、在 Spring Boot 项目中配置 这种配置中,Spring Boot Admin 作为 Server,其他 Spring Boot 应用作为 Client,Client 把自身的信息“注册”到 Server,我们就能在 Server 上看到“注册”的 Spring Boot 应用的状态信息了。 2.1、Server 端 新建一个项目 2.1.1、添加依赖 pom.xml <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId> <version>1.3.4</version></dependency><dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>1.3.4</version></dependency>2.1.2、开启监控 添加 @EnableAdminServer 注解开启监控 @Configuration@EnableAutoConfiguration@EnableAdminServerpublic class SpringBootAdminApplication { public static void main(String[] args) { SpringApplication.run(SpringBootAdminApplication.class, args); }}这里未指定 Server 运行的端口,默认是 8080,如果要指定,则需要在 application.properties 文件中设置: server.port=8080application.properties 2.2、Client 端 2.2.1、添加依赖 pom.xml <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-starter-client</artifactId> <version>1.3.4</version></dependency>这里的 spring-boot-admin-starter-client 会自动依赖 jolokia-core,jolokia是用于 JMX-bean 管理的。 2.2.2、触发自动配置、指明 Server 注册地址 application.properties spring.boot.admin.url=http://localhost:8080上面 3.1.2 中 Server 端我们使用默认的 8080 端口,所以这里声明 Server 的地址为:http://localhost:8080 2.3、开始管理 至此,启动 Server 端和 Client 端,在浏览器输入 Server 的地址:http://localhost:8080 就能看到“注册”进来的 Spring Boot 应用信息了。 2.4、显示应用版本 为了在 Spring Boot Admin 的应用管理列表显示被管理应用的版本号,你需要设置 info.version,例如使用 maven filtering: info.version=@project.version@application.properties 这里设置显示的版本号为 Maven pom.xml 中的构建版本号。 2.5、JMX-bean管理 JMX-bean 管理需要使用第三方的 jolokia,因为 spring-boot-admin-starter-client 会自动依赖 jolokia-core,所以这里不需要显示依赖了,第三节的基于 Eureka 注册发现的配置中,就需要显示地依赖: pom.xml <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId></dependency>2.6、Loglevel 管理 当前日志级别管理仅限 Logback,通过 JMX 实现,所以需要依赖 jolokia 。同时,还需要配置 Logback 的 JMXConfigurator: <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <jmxConfigurator/></configuration>logback.xml 这个 logback.xml 放在与 application.properties 同级的目录就可以了,如果不配置 Logback,那么 Spring Boot Admin 就无法管理应用的日志级别。 2.7、Server 端监控自己 以上的配置,基本就可以很好工作了。 但是有一个问题,我们没有监控作为 Server 端的 Spring Boot Admin 自身。如果要监控到 Server 自己,把 Server 端也当作是 Client 一样来配置就可以实现了:把 2.2.1、2.2.2、2.4、2.6 的步骤在 Server 端也配置一遍。 三、在 Spring Cloud 项目的 Eureka 中配置 这里示例的 Spring Cloud 项目是使用 Eureka 来做注册/发现的,官方 Github 示例里有基于 Consul 和 Zookeper 的配置。 配置好之后,Spring Boot Admin 就可以管理所有注册到 Eureka Server 的应用了,包括 Spring Boot Admin 自己(因为自己也会注册到 Eureka Server)。 3.1、一个简单的 Eureka Server 关于 Eureka Server 这里不做详细介绍,只列一下配置经过: pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId></dependency>Eureka Server 启动类 @SpringBootApplication@EnableEurekaServerpublic class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); }}application.properties spring.application.name=eureka-serverserver.port=8761在 application.properties 同级目录下新建 bootstrap.properties 文件: bootstrap.properties eureka.instance.hostname=localhosteureka.client.registerWithEureka=falseeureka.client.fetchRegistry=falseeureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/此文件作用与 application.properties 几乎样,只是但是作用在 application context 启动时期。原话是:like application.properties but for the bootstrap phase of an application context 。 以上配置表明,我们的 Eureka Server 运行在 8761 端口。服务注册地址是:http://localhost:8761/eureka/ 3.2、Server 端 官方示例:spring-boot-admin-sample-eureka 3.2.1、添加 spring-cloud-starter-eureka 依赖 pom.xml <dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server</artifactId> <version>1.3.4</version></dependency><dependency> <groupId>de.codecentric</groupId> <artifactId>spring-boot-admin-server-ui</artifactId> <version>1.3.4</version></dependency><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId></dependency>3.2.2、添加 @EnableDiscoveryClient 开启发现 @Configuration@EnableAutoConfiguration@EnableDiscoveryClient@EnableAdminServerpublic class SpringBootAdminApplication { public static void main(String[] args) { SpringApplication.run(SpringBootAdminApplication.class, args); }}3.2.3、指明去哪注册 application.properties eureka.instance.client.serviceUrl.defaultZone: http://localhost:8761/eureka/也就是我们在 3.1 中配置的 Eureka Server 服务地址。 这个配置我测试时并不成功,改为 eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/ 才可以,不知为何。 3.2.4、官方未说明的 3.2.1 ~ 3.2.3 的配置,会把 Server 注册到 Eureka Server,也就是说 Spring Boot Admin 也可以管理自身,但现在的 Server 配置还不全面(比如自身还缺的配置有:版本信息、 JMX 管理和 Loglevel 管理)。加上以下配置: application.properties info.version=@project.version@pom.xml <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId></dependency>logback.xml <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <jmxConfigurator/></configuration>3.3、Client 端 Client 端的配置主要是把自己注册到 Eureka Server 中就可以被 Spring Boot Admin 管理了,免去了手工配置 Spring Boot Admin 服务地址的操作(即 2.2.2 节操作)。 3.3.1、依赖 pom.xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>注意要添加 spring-boot-starter-actuator 依赖,因为获取应用信息是通过 actuator 中的相关 endpoints 获取的。 之所以 Server 端不需要添加此依赖,是因为 spring-boot-admin-server 依赖于 spring-boot-admin-starter-client ,而 spring-boot-admin-starter-client 依赖于 spring-boot-starter-actuator 。 3.3.2、启动类 @SpringBootApplication@EnableEurekaClientpublic class ClientEurekaSampleApplication { public static void main(String[] args) { SpringApplication.run(ClientEurekaSampleApplication.class, args); }}添加 @EnableDiscoveryClient 或 @EnableEurekaClient 注解到启动类上,将自己注册到 Erueka Server。 3.3.3、指明去哪注册 bootstrap.properties eureka.client.serviceUrl.defaultZone: http://localhost:8761/eureka/3.3.4、其他项配置 application.properties info.version=@project.version@logback.xml <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <jmxConfigurator/></configuration>pom.xml <dependency> <groupId>org.jolokia</groupId> <artifactId>jolokia-core</artifactId></dependency>四、通知 官方提供好几种通知方式,这里贴一下邮件通知的配置,其他 Pagerduty、Hipchat 、Slack 和 Reminder 的通知配置请参见官方文档。 使用 spring-boot-starter-mail 依赖配置 JavaMailSender pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>application.properties spring.mail.host=smtp.example.comspring.boot.admin.notify.mail.to=admin@example.com表格:邮件配置选项 [td]
五、附:Spring Boot Admin Server 配置说明 表格:Spring Boot Admin Server 配置选项 [td]
5.1、Spring Cloud 对自动发现的支持 来自被发现的应用的状态信息是经过 ServiceInstanceConverter 转换过的,自动配置时,使用了 Spring Boot Admin 自带的 Eureka 转换实现。你也可以实现相关接口并并添加到上下文以替换默认的。 表格:注册发现配置选项 [td]
六、附:Spring Boot Admin Client 配置说明 Spring Boot Admin Client 注册到 Spring Boot Admin Server,Client 定期地发送 Http Post 到 admin 提供自己的应用信息。如果需要管理 loglevels 或 JMX-beans ,则要在依赖中添加 Jolokia ,使得 JMX-beans 也可以通过 http 访问。 表格:Spring Boot Admin Client配置选项 [td]
|
推荐了解热门学科
java培训 | Python人工智能 | Web前端培训 | PHP培训 |
区块链培训 | 影视制作培训 | C++培训 | 产品经理培训 |
UI设计培训 | 新媒体培训 | 产品经理培训 | Linux运维 |
大数据培训 | 智能机器人软件开发 |
传智播客是一家致力于培养高素质软件开发人才的科技公司,“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。
传智播客从未停止思考
传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”
中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。
何为中高级程序员课程?
传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展。“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。
黑马程序员热门视频教程【点击播放】
Python入门教程完整版(懂中文就能学会) | 零起点打开Java世界的大门 |
C++| 匠心之作 从0到1入门学编程 | PHP|零基础入门开发者编程核心技术 |
Web前端入门教程_Web前端html+css+JavaScript | 软件测试入门到精通 |