5分钟轻松玩转hystrix实时监控
Posted 燕山雷震子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5分钟轻松玩转hystrix实时监控相关的知识,希望对你有一定的参考价值。
在微服务的架构中,hystrix除了可以作为熔断保护器,还具备实时监控的性能,在我们调用服务时,hystrix会对关于hystrixcommand的执行信息进行实时记录,类似qps、成功请求统计,如此可以支持我们来进行实时监控!
hystrix实时监控
引入actuator、hystrix依赖,在项目的启动类入口添加@EnableHystrix:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
当我们设置了hystrixcommand之后,未接受请求时浏览器查看localhost:8086/actuator/hystrix.stream内容为空,当发生调用失败时,该界面实时记录调用反馈:
hystrix dashboard
前一部分我们用到了hystrix的实时监控,实际运用中对于监控的处理,我们更倾向于图形化展示,因此有了hystrix dashboard的产生:
引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
启动类添加@EnableHystrixDashboard,配置后运行图为:
图中有三处位置需要我们填写:
delay时间:用多少浩渺同步一次监控信息
title标题:自定义标题
hytrix的集群监控
前面使用dashboard实现了单个监控,但是实际生产中我们采用的是集群模式,所以需要一个对集群系统的监控信息工具,这个工具正式turbine,turbine是聚合服务器发送事件流数据的工具,hystrix只能监控单节点,然后用dashboard展示,实际集群时我们可以通过eureka来发现hystrix服务,采用turbine来监控集群下hystrix的metrics情况;
添加turbine依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
在启动类上增加 @EnableTurbine 和 @EnableDiscoveryClient;
在属性文件中配置如下内容:
eureka.client.serviceUrl.defaultZone=http://username:password@localhost:port/eureka/
turbine.appConfig=hystrix-feign-demo #配置需要聚合的服务名称
turbine.aggregator.clusterConfig=default #Turbine 需要聚合的集群名称turbine.clusterNameExpression=new String("default") #集群名表达式
重启服务后使用 http://localhost:9011/turbine.stream 访问集群的监控数据
Turbine 会通过在 Eureka 中查找服务的 homePageUrl 加上 hystrix.stream 来获取其他服务的监控数据,并将其汇总显示,需要注意的是被监控的服务中如果设置了context-path,会导致turbine无法监控数据,显示如图提示:
这个时候需要在 Turbine 中指定 turbine.instanceUrlSuffix 来解决这个问题:
turbine.instanceUrlSuffix=/sub/hystrix.stream
sub 用于监控服务的 context-path,上面这种方式是全局配置,这样会有一个问题,就是一般使用中会用一个集群去监控多个服务,如果每个服务的 context-path 都不一样,这个时候有一些就会出问题,那么就需要对每个服务做一个集群,然后配置集群对应的 context-path:
turbine.instanceUrlSuffix. 集群名称 =/sub/hystrix.stream
结语
今天的分享就到这里,我是雷记,专注于分享关于开发编程相关的技术干货,如果今日的分享对您有帮助的话,还望不吝关注点赞,这对我很重要!如果各位在开发过程中遇到棘手问题,可以扫描下图二维码加入,和雷记与其他小伙伴一起探讨解决,让我们努力让每一个问题都得到解决!
以上是关于5分钟轻松玩转hystrix实时监控的主要内容,如果未能解决你的问题,请参考以下文章
zabbix 3.2 监控Windows 实时内存使用率与CPU使用率
10.Spring-Cloud-Hystrix之熔断监控Hystrix Dashboard单个应用