摘要:图形化是如何实现指标的收集展示的图形化界面入口说明端口是由配置文件来指定的,可以修改。图形化的界面其实就是从这个获取数据,并展示的怎么把流数据返回省略代码省略代码其实就是通过去获取响应结果,然后不断的输出到前台页面。
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的链接来获取数据并展现的。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68756.html
使用turbine收集hystrix指标 1、pom中引入对turbin的依赖,并增加dashboard图形界面的展示 org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-c...
摘要:可简单地认为它是的扩展,负载均衡自然成为不可或缺的特性。是基于开发的服务代理组件,在使用场景中,它与和整合,打造具备服务动态更新和负载均衡能力的服务网关。类似的特性在项目也有体现,它是另一种高性能代理的方案,提供服务发现健康和负载均衡。 摘要: Cloud Native 应用架构随着云技术的发展受到业界特别重视和关注,尤其是 CNCF(Cloud Native Computing Fo...
showImg(https://segmentfault.com/img/remote/1460000014421849); 概述 一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据,本文将实操 如何搭建一个可视化的监控中心 来收集这些承载着具体应...
摘要:要运行仪表板,请使用注解主类,然后访问并将仪表板指向客户端应用程序中的单个实例的端点。连接到使用的端点时,必须信任服务器使用的证书,如果证书不受信任,则必须将证书导入,以便仪表板成功连接到流端点。 Hystrix超时和Ribbon客户端 使用包装Ribbon客户端的Hystrix命令时,要确保将Hystrix超时配置为长于配置的Ribbon超时,包括可能进行的任何可能的重试,例如,如果...
摘要:典型实现不同的监控模块,侧重于不同领域,有着不同的职责。指标收集方面,支持多样化的组件将被优先下使用。以上谈了这么多,仅仅是聊了一下收集方面而已。 更多文章,请移步微信公众号《小姐姐味道》 mp原文 https://mp.weixin.qq.com/s?__...监控是分布式系统的必备组件,能够起到提前预警、问题排查、评估决策等功效,乃行走江湖、居家必备之良品。 监控系统概要 功能划分...
阅读 1181·2021-09-03 10:44
阅读 560·2019-08-30 13:13
阅读 2786·2019-08-30 13:11
阅读 1954·2019-08-30 12:59
阅读 1016·2019-08-29 15:32
阅读 1575·2019-08-29 15:25
阅读 954·2019-08-29 12:24
阅读 1256·2019-08-27 10:58