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功能说明的更多相关文章

  1. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序,支持异常邮件通知

    1. Spring Boot Admin 是什么 Spring Boot Admin 是由 codecentric 组织开发的开源项目,使用 Spring Boot Admin 可以管理和监控你的 S ...

  2. Spring Boot Admin的使用

    http://www.jianshu.com/p/e20a5f42a395 ******************************* 上一篇文章中了解了Spring Boot提供的监控接口,例如 ...

  3. Spring Boot admin 2.0 详解

    一.什么是Spring Boot Admin ? Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序. 应用程序作为Spring Boot Admin C ...

  4. SpringCloud(8)微服务监控Spring Boot Admin

    1.简介 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.Spring Boot Admin 分为 Server 端和 Client 端,Spring ...

  5. Springboot监控之二:Spring Boot Admin对Springboot服务进行监控

    概述 Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控.类加载.健 ...

  6. 微服务架构之spring boot admin

    Spring boot admin是可视化的监控组件,依赖spring boot actuator收集各个服务的运行信息,通过spring boot actuator可以非常方便的查看每个微服务的He ...

  7. Spring Boot Admin 2.1.0 全攻略

    转载请标明出处: https://www.fangzhipeng.com 本文出自方志朋的博客 Spring Boot Admin简介 Spring Boot Admin是一个开源社区项目,用于管理和 ...

  8. 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 的基础上提 ...

  9. SpringBoot | 第二十八章:监控管理之Spring Boot Admin使用

    前言 上一章节,我们介绍了Actuator的使用,知道了可通过访问不同的端点路径,获取相应的监控信息.但使用后也能发现,返回的监控数据都是以JSON串的形式进行返回的,对于实施或者其他人员来说,不是很 ...

  10. spring boot admin抛出"status":401,"error":"Unauthorized"异常

    打开spring boot admin的监控平台发现其监控的服务明细打开均抛出异常: Error: {"timestamp":1502749349892,"status& ...

随机推荐

  1. 搭建S3C6410开发板的测试环境

      因为ARM架构的开发板可基于X86架构的PC在CPU指令以及二进制上都有所不同,而且如果linux驱动需要访问硬件,这些硬件很难在PC上模拟,所以就需要我们在带有这些硬件的开发板上进行调试和测试. ...

  2. linux hadoop安装

    linux hadoop安装 本文介绍如何在Linux下安装伪分布式的hadoop开发环境. 在一开始想利用cgywin在 windows下在哪, 但是一直卡在ssh的安装上.所以最后换位虚拟机+ub ...

  3. MATLAB绘图

    matlab绘制散点图 clc,clear x=[11.9,11.5,14.5,15.2,15.9,16.3,14.6,12.9,15.8,14.1]; y=[196.84,196.84,197.14 ...

  4. 20145227&20145201 《信息安全系统设计基础》实验四

    北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1452 姓名:(按贡献大小排名)鄢曼君 李子璇 学号:(按贡献大小排名)20145227 20145201 成绩: ...

  5. 面试题HTML +CSS

    HTML+CSS部分1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素?行内元素:和有他元素都在一行上,高度.行高及外边距和内边距都不可改变,文字图片的宽度不可改变,只能容纳文本或者其他 ...

  6. DllImport attribute的总结

    C#有没有方法可以直接都用已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法),而不需要重新编写代码? 答案是肯定,就是通过接下来要说的 DllImport . DllImp ...

  7. 编码转换的处理 DreamWeaver SC6 打开会出现javacsript出现问题的处理

      编码转换的处理: 打开DW后,修改里面有个"页面属性": 点击页面属性,会弹出一个窗口,点击"标题/编码",在"编码"里面选择你要转换的 ...

  8. 【Python】使用Supervisor来管理Python的进程

    来源 : http://blog.csdn.net/xiaoguaihai/article/details/44750073     1.问题描述 需要一个python的服务程序在后台一直运行,不能让 ...

  9. Upload java coed in Ubuntu(在Linux 16上,上传代码)

    指令如下:(按照如下指令顺序执行即可) 1.git status  (注释:可以查看哪些代码改动了) 2.git add .     (注意:不要漏掉add后面的" . ",将本地 ...

  10. PHP interface(接口)的示例代码

    <?php class DocumentStore { protected $data = []; public function addDocument(Documentable $docum ...