博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第六章:Hystrix监控面板及数据聚合(Turbine)
阅读量:6214 次
发布时间:2019-06-21

本文共 4713 字,大约阅读时间需要 15 分钟。

hot3.png

第六章:Hystrix监控面板及数据聚合(Turbine)

 

了解如何整合Hystrix。而在实际情况下,使用了Hystrix的同时,还会对其进行实时的数据监控,反馈各类指标数据。今天我们就将讲解下Hystrix DashboardTurbine.其中Hystrix Dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command请求响应时间请求成功率等数据,监控单个实例内的指标情况。后者Turbine,能够将多个实例指标数据进行聚合的工具。

 

Hystrix-Dashboard

Hystrix-dashboard(仪表盘)是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数据。

创建一个spring-cloud-hystrix-dashboard工程。

0.引入POM依赖。

1234
org.springframework.cloud
spring-cloud-starter-netflix-hystrix-dashboard

 

1.启动类加入@EnableHystrixDashboard注解,开启仪表盘功能。

12345678910
@SpringBootApplication@EnableHystrixDashboard@Slf4jpublic class HystrixDashboardApplication {    public static void main(String[] args) {        SpringApplication.run(HystrixDashboardApplication.class, args);        log.info("spring-cloud-hystrix-dashboard启动!");    }}

 

2.配置文件修改下,指定端口和应用名称。

12345
#应用名称spring.application.name=hystrix-dashboard#端口号server.port=9696

 

3.启动应用,访问: ,就可以看见如下页面了:

hystrix-dashboard

从首页的监控页面可以看出,此时尚未配置监控应用。而且,从页面我们也可以看出,一共有三种数据源形式,即不同的监控方式:

  • 默认的集群监控:通过URL: 开启,实现对默认集群的监控。
  • 指定的集群监控:通过URL: 开启,实现对clusterName集群的监控。
  • 单体应用的监控:通过URL: 开启,实现对具体某个服务实例的监控。

注意:2.0之后,默认的监控端点地址加了上下文路径actuator。可通过management.endpoints.web.base-path属性进行修改,默认是:actuator

现在,我们改造下spring-cloud-hystrix项目,开启端点,同时启用监控端点hystrix.stream

0.引入端点依赖。

1234
org.springframework.boot
spring-boot-starter-actuator

 

1.配置文件开启端点hystrix.stream。这里需要注意,2.0之后,默认只开启了端点infohealth。其他的需要通过management.endpoints.web.exposure.include进行额外配置。

12
#开启监控端点management.endpoints.web.exposure.include=hystrix.stream

现在我们启动spring-cloud-hystrix。然后添加:到仪表盘中。

添加监控应用

填写了标题后,点击按钮Monitor Stream,就可以进入监控页面了。

监控页面

此时,我们访问下: 。因为服务spring-cloud-eureka-client为启动,所以会触发熔断方法,多访问几次,再次查看监控页面,就可以看见相关数据了。

监控页面

此时,可以启动下服务spring-cloud-eureka-client,然后再次访问下接口。

监控页面

不同的颜色对应断路器监控的百分比

监控指标

关于监控界面的参数解读,这里直接转至博客园:的图例,地址:

图例

  • 实心圆:它有颜色和大小之分,分别代表实例的监控程度和流量大小。如上图所示,它的健康度从绿色、黄色、橙色、红色递减。通过该实心圆的展示,我们就可以在大量的实例中快速的发现故障实例和高压力实例。
  • 曲线:用来记录 2 分钟内流量的相对变化,我们可以通过它来观察到流量的上升和下降趋势。
  • 其他一些数量指标如下图所示

Turbine

hystrix只能实现单个微服务的监控,可是一般项目中是微服务是以集群的形式搭建,一个一个的监控不现实。而Turbine的原理是,建立一个turbine服务,并注册到eureka中,并发现eureka上的hystrix服务。通过配置turbine会自动收集所需hystrix的监控信息,最后通过dashboard展现,以达到集群监控的效果。

turbine

简单来说,就是通过注册到注册中心,发现其他服务的hystrix服务,然后进行聚合数据,最后通过自身的端点输出到仪表盘上进行个性化展示。这我们就监控一个turbine应用即可,当有新增的应用加入时,我们只需要配置下turbine参数即可。

创建spring-cloud-hystrix-turbine工程。

0.引入POM依赖。

12345678910
org.springframework.cloud
spring-cloud-starter-netflix-turbine
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client

 

1.启动类加入注解@EnableTurbine@EnableDiscoveryClient.

12345678910111213141516
/** * turbine服务示例 * @author oKong * */@SpringBootApplication@EnableTurbine@EnableDiscoveryClient@Slf4jpublic class HystrixTurbineApplication {	public static void main(String[] args) {		SpringApplication.run(HystrixTurbineApplication.class, args);		log.info("spring-cloud-hystrix-turbine启动!");	}}

 

2.配置文件加入注册中心及turbine相关配置信息。

123456789101112131415161718192021
#应用名称spring.application.name=hystrix-tuibine#端口号server.port=9698#指定注册中心地址eureka.client.service-url.defaultZone=http://127.0.0.1:1000/eureka# 启用ip配置 这样在注册中心列表中看见的是以ip+端口呈现的eureka.instance.prefer-ip-address=true# 实例名称  最后呈现地址:ip:2000eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}#turbine配置# 需要监控的应用名称,默认逗号隔开,内部使用Stringutils.commaDelimitedListToStringArray分割turbine.app-config=hystrix-example# 集群名称turbine.cluster-name-expression="default"# true 同一主机上的服务通过host和port的组合来进行区分,默认为true# false 时 在本机测试时 监控中host集群数会为1了 因为本地host是一样的turbine.combine-host-port=true

 

2.修改spring-cloud-hystrix应用,创建一个application-turbine.properties配置文件,里面就设置一个端口好区别下实例。

application-turbine.properties

1
server.port=8039

2.此时启动下应用,同时启动spring-cloud-hystrix应用,设置不同的spring.profiles.active值,以此启动多个实例。在仪表盘应用:中添加: ,之后点击按钮:Monitor Stream,此时界面是loading状态。接着多次访问: ,并可以看见有数据了。

turbine.stream

之后,我们接着访问: ,可以看见Hosts变成2了。

turbine.stream

一点疑问:关于hystrix dashboard是监控Hystrix Command的指标情况,当我们监控的方法都一致时,是不是区分不了具体是哪个服务的了?按目前的演示demo中,是没有看出具体是哪个应用出现了异常。。不知道是不是使用姿势不对,觉得不应该是这样的吧。。

加了个配置文件applicatioon-test,端口号不一致,创建个新的api接口加上HystrixCommand,最后出现的图例确实是按照方法名来的。这应该不是巧合了吧。。

demo

还希望有了解这方面的同学,能答疑解惑下。目前是用pinpoint了,对这块不是很熟悉。而且pinpoint也仅仅是监控了下,具体深入尚未了解。。路漫漫其修远兮呀!

参考资料

总结

本章节主要是对Hystrix数据进行实时监控进行了讲解,介绍了单体应用和集群应用的监控示例。这块也只是简单的使用,未进行深入了解过,看官网收集监控数据还可以使用消息代理的方式进行收集,目前默认是使用HTTP的协议进行收集的,有兴趣的同学可以自行试试,这和后面会讲解的zikpin微服务跟踪是类似的,后者也可以使用消息代理进行异步数据收集,可以提供性能。

转载于:https://my.oschina.net/demons99/blog/2247082

你可能感兴趣的文章
2-sat
查看>>
Jquery DataTable控制显示列,导出EXCEL
查看>>
实验证明:Objective-C++ 完美支持 ARC
查看>>
第八章 Libgdx输入处理(10)触摸屏
查看>>
【mysql】新方法修改数据库密码以及解决--ERROR 1045 (28000)的问题
查看>>
C# ListView控件使用简介
查看>>
当你的才华还不足以支撑起你的野心时,你就该静下心来学习
查看>>
包加载失败的解决办法
查看>>
100款编程在线工具|果断收藏!
查看>>
C语言简单实现链栈基本几个功能
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(15)--- 监视器对象...
查看>>
开通技术博客
查看>>
使用SecureCRT在Linux与Windows之间传输文件
查看>>
git获取远程仓库的方式
查看>>
atomic integer operations P176
查看>>
springboot之HelloWorld
查看>>
python全栈_003_Python3运算符
查看>>
新maven项目创建JSP出现小红叉报错 javax.servlet.http.HttpServlet not found
查看>>
微信小程序列表加载更多
查看>>
leetcode笔记-1 twosum
查看>>