spring cloud图形化dashboard是如何实现指标的收集展示的

1、dashboard图形化界面入口

http://localhost:10000/hystrix.stream

说明:端口是由配置文件server.port=10000来指定的,可以修改。

打开后可以看到如下的界面

输入需要监控的集群,然后点击Monitor Stream按钮,进行集群监控

这边假设输入

http://localhost:10000/turbine.stream?cluster=default

可以看到下面的界面

注:如果看到的是空白页面,需要访问一下开启了@HystrixCommand注解的rest方法,本文中有两个方法,hello、hellosleep方法。

    @GetMapping("/hello")
@HystrixCommand(fallbackMethod = "helloFallback")
public String hello() {
return "provide hello world";
}

    @GetMapping("/hellosleep")
@HystrixCommand(fallbackMethod = "helloexFallback")
public String hellosleep() throws InterruptedException {
int i = 2000;
TimeUnit.MILLISECONDS.sleep(i);
return "provide hellosleep world!";
}

2、dashboard是如何实现监控数据的获取的。

我们通过浏览器工具打开网络监控,或者使用F12快捷键查看监控的url。

如下:

url:

http://localhost:10000/proxy.stream?origin=http%3A%2F%2Flocalhost%3A10000%2Fturbine.stream%3Fcluster%3Ddefault

我们看到,它是通过proxy.stream来获取数据,有一个origin参数,就是前面我们输入的想要监控的那个url地址,即【http://localhost:10000/turbine.stream?cluster=default】。proxy.stream其实对应的是一个servlet。

查看源码:

HystrixDashboardConfiguration可以看到它有一个内部类ProxyStreamServlet就是用来处理这个url的。

关键源码如下:

这个servlet其实就是通过origin来获取数据,如果我们直接访问origin所对应的地址,可以看到如下的数据,像流一样源源不断的打印出来。

图形化的界面其实就是从这个servlet获取数据,并展示的

3、servlet怎么把流数据返回

        httpget = new HttpGet(proxyUrl);
HttpClient client = ProxyConnectionManager.httpClient;
HttpResponse httpResponse = client.execute(httpget);
int statusCode = httpResponse.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
is = httpResponse.getEntity().getContent();
//省略代码...
OutputStream os = response.getOutputStream();
int b = -1;
while ((b = is.read()) != -1) {
try {
os.write(b);
if (b == 10 /** flush buffer on line feed */
) {
os.flush();
}
}
catch (Exception ex) {
//省略代码...
}
}
}

servlet其实就是通过url去获取响应结果,然后不断的输出到前台页面。

4、前台界面怎么展示不断响应回来的流数据呢

这边主要用到了HTML5的一个对象EventSource,可以获取到这个数据。

注意: EventSource不支持IE浏览器,这边使用谷歌浏览器

我们还是通过浏览器工具,查看图形化界面的使用到js脚本。

如下:

EventSource对象可以对url进行监听,并注册响应函数。这里不进行展开,有兴趣的同学可以详细的阅读里面的脚本。

5、总结

turbine收集的数据是一种json格式的数据,而且像流一样不断输出。所以我们需要借助图形化工具来展示。而图形化工具的数据订阅我们通过上面的分析已经知道,其实他就是通过servlet来访问turbine的链接来获取数据并展现的。

spring cloud图形化dashboard是如何实现指标的收集展示的的更多相关文章

  1. 微服务架构之spring cloud hystrix&hystrix dashboard

    在前面介绍spring cloud feign中我们已经使用过hystrix,只是没有介绍,spring cloud hystrix在spring cloud中起到保护微服务的作用,不会让发生的异常无 ...

  2. spring cloud: Hystrix(七):Hystrix的断容器监控dashboard

    Hystrix的断容器监控dashboard. dashboard是用来监控Hystrix的断容器监控的,图形化dashboard是如何实现指标的收集展示的. dashboard 本地端口8730 项 ...

  3. 微服务架构集大成者—Spring Cloud (转载)

    软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福. 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 1 背景 2 ...

  4. Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵基础实战

    Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵基础实战 Springboot: 2.1.8.RELEASE SpringCloud: Greenwich.SR2 ...

  5. Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则

    Spring Cloud Alibaba | Sentinel:分布式系统的流量防卫兵动态限流规则 前面几篇文章较为详细的介绍了Sentinel的使用姿势,还没看过的小伙伴可以访问以下链接查看: &l ...

  6. Spring Cloud微服务Sentinel+Apollo限流、熔断实战总结

    在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架.而以下要介绍的正是作者最近两个月的真实 ...

  7. Spring Cloud微服务限流之Sentinel+Apollo生产实践

    Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素.在并发流量比较高的情况下,由于网络调用之间存 ...

  8. Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则

    上一篇我们介绍了如何通过Nacos的配置功能来存储限流规则.Apollo是国内用户非常多的配置中心,所以,今天我们继续说说Spring Cloud Alibaba Sentinel中如何将流控规则存储 ...

  9. Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则

    通过上一篇<使用Sentinel实现接口限流>的介绍,相信大家对Sentinel已经有了初步的认识.在Spring Cloud Alibaba的整合封装之下,接口限流这件事情可以非常轻易的 ...

随机推荐

  1. 来了解一下Ajax是什么?Ajax的原理?Ajax与传统Web比较?Ajax的优缺点?Ajax的Post与Get比较

    一.什么是Ajax Ajax(Asynchronous Java and XML的缩写)是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助.简单地说,在不需要重新刷新页面的情况下 ...

  2. UVA12995 Farey Sequence

    UVA12995 Farey Sequence 欧拉函数 同仪仗队那题几乎相同,本质都是求欧拉函数的和 #include<cstdio> #define N 1000000 ],i,j,t ...

  3. 01: tornado基础篇

    目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 Torn ...

  4. 20145335郝昊《网络攻防》Exp7 网络欺诈技术防范

    20145335郝昊<网络攻防>Exp7 网络欺诈技术防范 实验内容 本次实践本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 简单应用SET工具建立冒名网站. ...

  5. payload

    payload就是协议报文中的有效载荷所占报文的百分比,用报文中去除协议的长度/报文总长度,协议设计的时候需要考虑到有效载荷所占的比重,避免出现payload很小的情况,比如TCP在设计的时候,就考虑 ...

  6. CRC32是什么?

    CRC32:CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值.由于CRC32产生校验值时源数据块的每一个bit(位)都参与了计算,所以数据块中即使只有一 ...

  7. CEF之CefSettings设置日志等级

    CefSettings结构体允许定义全局的CEF配置,经常用到的配置项如下: single_process 设置为true时,Browser和Renderer使用一个进程.此项也可以通过命令行参数“s ...

  8. git分支 远程协作

    创建文件mkdir ### cd ### git init 初始化 git config global user.name “username” git config global user.emia ...

  9. 【Apache】的运营之道

    1.“一个修修补补”的服务? 大家可能听说过 Apache 是一个双关语 “a patchy Web server”,意思为一个修修补补的 web 服务,即通过一系列的补丁做的服务.但是这并不是 Ap ...

  10. 51NOD 1133 不重叠的线段

    1133 不重叠的线段   X轴上有N条线段,每条线段有1个起点S和终点E.最多能够选出多少条互不重叠的线段.(注:起点或终点重叠,不算重叠).   例如:[1 5][2 3][3 6],可以选[2 ...