Spring-boot-admin功能说明
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项目中
2. 工作原理
2.1 客户端注册
客户端启动后会实例化RegistrationApplicationListener,listener默认会每隔10s到服务端去注册下,如果已经存在,会refresh
具体代码如下:
在跟服务器注册之前,客户端会先实例化Application信息,获取相应的信息,然后通过restful http post请求跟服务器交互
服务端代码逻辑:服务器端首先会根据客户端的HealthUrl,通过SHA-1 算法得到客户端的id值,借此区分不同的客户端节点
获取到客户端id后,从服务端保存的ConcurrentHashMap 对象中,根据id获取客户端状态信息,如果存在状态信息,则refresh或者replace,否则往map中新加客户端信息
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值
具体代码如下:
具体的路由信息如下:
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 监控接口获取数据返回
界面代码:
经过测试发现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
Spring-boot-admin功能说明的更多相关文章
- Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知
1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...
- Spring Boot Admin的使用
http://www.jianshu.com/p/e20a5f42a395 ******************************* 上一篇文章中了解了Spring Boot提供的监控接口,例如 ...
- Spring Boot admin 2.0 详解
一.什么是Spring Boot Admin ? Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序. 应用程序作为Spring Boot Admin C ...
- SpringCloud(8)微服务监控Spring Boot Admin
1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...
- Springboot监控之二:Spring Boot Admin对Springboot服务进行监控
概述 Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控.类加载.健 ...
- 微服务架构之spring boot admin
Spring boot admin是可视化的监控组件,依赖spring boot actuator收集各个服务的运行信息,通过spring boot actuator可以非常方便的查看每个微服务的He ...
- Spring Boot Admin 2.1.0 全攻略
转载请标明出处: https://www.fangzhipeng.com 本文出自方志朋的博客 Spring Boot Admin简介 Spring Boot Admin是一个开源社区项目,用于管理和 ...
- spring boot 2.0.3+spring cloud (Finchley)8、微服务监控Spring Boot Admin
参考:Spring Boot Admin 2.0 上手 Spring Boot Admin 用于管理和监控一个或多个Spring Boot程序,在 Spring Boot Actuator 的基础上提 ...
- SpringBoot | 第二十八章:监控管理之Spring Boot Admin使用
前言 上一章节,我们介绍了Actuator的使用,知道了可通过访问不同的端点路径,获取相应的监控信息.但使用后也能发现,返回的监控数据都是以JSON串的形式进行返回的,对于实施或者其他人员来说,不是很 ...
- spring boot admin抛出"status":401,"error":"Unauthorized"异常
打开spring boot admin的监控平台发现其监控的服务明细打开均抛出异常: Error: {"timestamp":1502749349892,"status& ...
随机推荐
- Python 多线程教程:并发与并行
转载于: https://my.oschina.net/leejun2005/blog/398826 在批评Python的讨论中,常常说起Python多线程是多么的难用.还有人对 global int ...
- Oracle数据库学习笔记
创建表的同时插入数据:create table zhang3 as select * from zhang1;create table zhang3(id,name) as select * from ...
- 【转】Delphi+Halcon实战一:两行代码识别QR二维码
Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...
- Mysql的基础使用之SQL原生语句的使用:表的 创建 删除 修改 (一)
上一篇主要讲的是关于Mysql的分支MariaDB在Linux下的安装 顺利安装完成的小伙伴,就可以接着来试试SQL的魅力了 红色为命令 蓝色为自定义名 查看数据库 MariaDB [(none)]& ...
- Vim命令合集大全
命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim ...
- Git中pull对比fetch和merge
本文参考于:http://www.zhanglian2010.cn/2014/07/git-pull-vs-fetch-and-merge/ 使用git fetch和git pull都可以更新远程仓库 ...
- switch 与 python字典
python 中并没有switch语句,但是有一个数据类型与switch语句特别相似,它就是 dict{ key: value, ...} 下面用 dict{ key:value,..} 来简单的实现 ...
- ODBC简介
加载驱动 1 oracle Class.forName("oracle.JDBC.driver.OracleDriver") 2 DB2 Class.forName("c ...
- MVC系列2-Model
上一篇我讲了ASP.MET MVC的基础概念,我相信从上一篇,我们可以知道MVC的执行过程.这一篇我们开始讲解Model.我们知道,在我们的应用程序中,大多时候是在遵循业务逻辑通过UI操作数据.所以这 ...
- 深入分析ClassLoader
首先介绍下ClassLoader: ClassLoader顾名思义就是类加载器,负责将Class加载到JVM中,事实上ClassLoader除了能将Class加载到JVM中之外,还有一个重要的作用就是 ...