首页新闻动态正文

【成都校区*springbootadmin结合eureka的使用】【黑马java培训】

更新时间: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 文件中设置:
application.properties
server.port=8080
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:
application.properties
info.version=@project.version@
这里设置显示的版本号为 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:
logback.xml
<configuration>  <include resource="org/springframework/boot/logging/logback/base.xml"/>  <jmxConfigurator/></configuration>
这个 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]
Property name
Description
Default value
中文说明
spring.boot.admin.notify.mail.enabledEnable mail notificationstrue默认启用
spring.boot.admin.notify.mail.ignore-changesComma-delimited list of status changes to be ignored. Format: “:”. Wildcards allowed.“UNKNOWN:UP”需要忽略的状态改变通知,逗号分隔
spring.boot.admin.notify.mail.toComma-delimited list of mail recipients“root@localhost”接收通知的邮箱地址,逗号分隔
spring.boot.admin.notify.mail.ccComma-delimited list of carbon-copy recipients抄送
spring.boot.admin.notify.mail.fromMail sender发送人
spring.boot.admin.notify.mail.subjectMail subject. SpEL-expressions are supported“#{application.name} (#{application.id}) is #{to.status}”主题
spring.boot.admin.notify.mail.textMail body. SpEL-expressions are supported“#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}”内容
五、附:Spring Boot Admin Server 配置说明
表格:Spring Boot Admin Server 配置选项
[td]
Property name
Description
Default value
中文说明
spring.boot.admin.context-pathThe context-path prefixes the path where the Admin Server's statics assets and API should be served. Relative to the Dispatcher-Servlet.Admin Server 保留的静态访问和API的前缀(当你在业务应用中使用而不是单独使用时就很有必要了)
spring.boot.admin.monitor.periodTime interval in ms to update the status of applications with expired status-informations.10.000更新应用信息的频率,单位毫秒
spring.boot.admin.monitor.status-lifetimeLifetime of application statuses in ms. The applications /health-endpoint will not be queried until the lifetime has expired.10.000被监控的应用信息的过期时间,单位毫秒
5.1、Spring Cloud 对自动发现的支持
来自被发现的应用的状态信息是经过 ServiceInstanceConverter 转换过的,自动配置时,使用了 Spring Boot Admin 自带的 Eureka 转换实现。你也可以实现相关接口并并添加到上下文以替换默认的。
表格:注册发现配置选项
[td]
Property name
Description
Default value
中文说明
spring.boot.admin.discovery.enabledEnables the DiscoveryClient-support for the admin server.true默认开启
spring.boot.admin.discovery.converter.management-context-pathWill be appended to the service-url of the discovered service when the managment-url is converted by the DefaultServiceInstanceConverter.
spring.boot.admin.discovery.converter.health-endpointWill be appended to the management-url of the discovered service when the health-url is converted by the DefaultServiceInstanceConverter.“health”
spring.boot.admin.discovery.ignored-servicesThis services will be ignored when using discovery and not registered as application.
六、附: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]
Property name
Description
Default value
中文说明
spring.boot.admin.client.enabledEnables the Spring Boot Admin Client.true默认开启
spring.boot.admin.urlList of URLs of the Spring Boot Admin server to register at. This triggers the AutoConfiguration. Mandatory.admin server 的地址列表,此设置会触发自动配置,必须
spring.boot.admin.api-pathHttp-path of registration endpoint at your admin server.“api/applications”注册到 admin server 端点的 Http-path
spring.boot.admin.username spring.boot.admin.passwordUsername and password for http-basic authentication. If set the registration uses http-basic-authentication when registering at the admin server.注册到 admin server 的账号密码
spring.boot.admin.periodInterval for repeating the registration (in ms).10.000重试注册的间隔时间
spring.boot.admin.auto-registrationIf set to true the periodic task to register the application is automatically scheduled after the application is ready.true应用启动后自动执行周期性的注册任务
spring.boot.admin.auto-deregistrationSwitch to enable auto-deregistration at Spring Boot Admin server when context is closed.false当应用关闭时,自动取消注册
spring.boot.admin.client.health-urlClient-health-url to register with. Can be overridden in case the reachable URL is different (e.g. Docker). Must be unique in registry.Guessed based on management-url and endpoints.health.id.
spring.boot.admin.client.management-urlClient-management-url to register with. Can be overridden in case the reachable url is different (e.g. Docker).Guessed based on service-url, server.servlet-path, management.port and management.context-path.
spring.boot.admin.client.service-urlClient-service-url to register with. Can be overridden in case the reachable url is different (e.g. Docker).Guessed based on hostname, server.port and server.context-path.
spring.boot.admin.client.nameName to register with.${spring.application.name} if set, “spring-boot-application” otherwise.注册时的名字
spring.boot.admin.client.prefer-ipUse the ip-address rather then the hostname in the guessed urls. If server.address / management.address is set, it get used. Otherwise the IP address returned from InetAddress.getLocalHost() gets used.false

推荐了解热门学科

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 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!