Spring-boot-admin功能说明

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】

http://blog.csdn.net/xingfulangren/article/details/52304413

***************************************************

  1. 准备

1.1 介绍

spring-boot-admin的Github源码地址:https://github.com/codecentric/spring-boot-admin

在Spring Boot Actuator的基础上提供简洁的可视化WEB UI,是用来管理 Spring Boot 应用程序的一个简单的界面,提供如下功能:

显示 name/id 和版本号

显示在线状态

Logging日志级别管理

JMX beans管理

Threads会话和线程管理

Trace应用请求跟踪

应用运行参数信息,如:

Java 系统属性

Java 环境变量属性

内存信息

Spring 环境属性

1.2组成部分

Spring-boot-admin由服务器端和客户端组成

服务器端配置(gradle工程):

build.gradle:compile(“de.codecentric:spring-boot-admin-server:1.4.1”)

compile(“de.codecentric:spring-boot-admin-server-ui:1.4.1”)

application.properties:server.port= 8090 (自定义)

spring.application.name=Spring Boot Admin Web (自定义)

spring.boot.admin.url=http://localhost:$\{server.port\}(自定义)

spring.jackson.serialization.indent_output=true

endpoints.health.sensitive=false

info.version=1.0.0(自定义)

启动spring-boot项目时需要加上@SpringBootApplication和 @EnableAdminServer 标签

客户端配置(gradle工程):

build.gradle:compile(“de.codecentric:spring-boot-admin-starter-client:1.4.1”)

application.properties:spring.application.name=spring-boot-admin-client (自定义)

spring.boot.admin.url=http://localhost:8090(注册到server)

server.port=8080(自定义)

info.version=1.0.0 (自定义)

spring-boot-admin-server:服务器后端处理逻辑代码

spring-boot-admin-server-ui:前端界面展示

spring-boot-admin-starter-client:客户端,需要添加到spring-boot项目中

  1. 工作原理

2.1 客户端注册

客户端启动后会实例化RegistrationApplicationListener,listener默认会每隔10s到服务端去注册下,如果已经存在,会refresh

具体代码如下:

2019101710084\_1.png

2019101710084\_2.png

在跟服务器注册之前,客户端会先实例化Application信息,获取相应的信息,然后通过restful http post请求跟服务器交互

2019101710084\_3.png

2019101710084\_4.png

服务端代码逻辑:服务器端首先会根据客户端的HealthUrl,通过SHA-1 算法得到客户端的id值,借此区分不同的客户端节点

2019101710084\_5.png

获取到客户端id后,从服务端保存的ConcurrentHashMap 对象中,根据id获取客户端状态信息,如果存在状态信息,则refresh或者replace,否则往map中新加客户端信息

2019101710084\_6.png

2.2 路由

客户端注册到服务端,会由服务端维护一层路由映射,会在路径上添加前缀、客户端id和后缀,默认前缀为:/api/applications 后缀:/**

Mapped URL path [/api/applications/73abdba9/health/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/env/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/metrics/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/trace/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/dump/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/jolokia/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/info/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/activiti/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/logfile/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/refresh/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/flyway/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/liquibase/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

Mapped URL path [/api/applications/73abdba9/heapdump/**] onto handler of type [class de.codecentric.boot.admin.zuul.OptionsDispatchingZuulController]

73abdba9 为客户端的id值

具体代码如下:

2019101710084\_7.png

具体的路由信息如下:

route matched=Route(id=73abdba9-health, fullPath=/api/applications/73abdba9/health/**,path=/**,location=http://pc-PC:8090/health,prefix=/api/applications/73abdba9/health, retryable=false, sensitiveHeaders=[],customSensitiveHeaders=false)

包含请求的路径,以及具体节点的实际访问路径(location)

2.3 具体请求执行路径

用户触发界面 -> 界面发起请求(带有具体的客户端id) -> 经过服务器端路由映射-> 具体节点的访问路径 -> 调用Spring Boot Autuator 监控接口获取数据返回

界面代码:

2019101710084\_8.png

经过测试发现health 接口,默认每隔20秒都会触发一次,其它接口只有刷新后才会触发接口调用,也许health被设计成心跳连接(猜测)

3.Spring Boot Autuator 监控

Spring boot autuator 提供很多的Endpoints 访问

endpoints = { “env”, “metrics”,”trace”, “dump”, “jolokia”, “info”,”activiti”, “logfile”, “refresh”,”flyway”, “liquibase”, “heapdump” };

endpoints说明以及自定义:

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html


来源:[]()

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » Spring-boot-admin功能说明

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏