跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解
发布日期:2021-09-01 18:44:19 浏览次数:2 分类:技术文章

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

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。

监控端点与数据

应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点,用来监控Hystrix Command。当被@HystrixCommand 注解了的方法被调用时,就会产生监控信息,并暴露到该端点中。当然,该端点默认是不会暴露的,需使用如下配置将其暴露。

management:  endpoints:
web:
  exposure:
include: 'hystrix.stream'

此时,访问/actuator/hystrix.stream 可返回如下结果:

{"type":"HystrixCommand","name":"findById","group":"MovieController","currentTime":1547905939151,"isCircuitBreakerOpen":false,"errorPercentage":0,"errorCount":0,"requestCount":0,"rollingCountBadRequests":0,"rollingCountCollapsedRequests":0,"rollingCountEmit":0,"rollingCountExceptionsThrown":0,"rollingCountFailure":0,"rollingCountFallbackEmit":0,"rollingCountFallbackFailure":0,"rollingCountFallbackMissing":0,"rollingCountFallbackRejection":0,"rollingCountFallbackSuccess":0,"rollingCountResponsesFromCache":0,"rollingCountSemaphoreRejected":0,"rollingCountShortCircuited":0,"rollingCountSuccess":0,"rollingCountThreadPoolRejected":0,"rollingCountTimeout":0,"currentConcurrentExecutionCount":0,"rollingMaxConcurrentExecutionCount":0,"latencyExecute_mean":0,"latencyExecute":{"0":0,"25":0,"50":0,"75":0,"90":0,"95":0,"99":0,"99.5":0,"100":0},"latencyTotal_mean":0,"latencyTotal":{"0":0,"25":0,"50":0,"75":0,"90":0,"95":0,"99":0,"99.5":0,"100":0},"propertyValue_circuitBreakerRequestVolumeThreshold":20,"propertyValue_circuitBreakerSleepWindowInMilliseconds":5000,"propertyValue_circuitBreakerErrorThresholdPercentage":50,"propertyValue_circuitBreakerForceOpen":false,"propertyValue_circuitBreakerForceClosed":false,"propertyValue_circuitBreakerEnabled":true,"propertyValue_executionIsolationStrategy":"THREAD","propertyValue_executionIsolationThreadTimeoutInMilliseconds":1000,"propertyValue_executionTimeoutInMilliseconds":1000,"propertyValue_executionIsolationThreadInterruptOnTimeout":true,"propertyValue_executionIsolationThreadPoolKeyOverride":null,"propertyValue_executionIsolationSemaphoreMaxConcurrentRequests":10,"propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests":10,"propertyValue_metricsRollingStatisticalWindowInMilliseconds":10000,"propertyValue_requestCacheEnabled":true,"propertyValue_requestLogEnabled":true,"reportingHosts":1,"threadPool":"MovieController"}

对于Feign

前面讲过Feign默认已经整合了Hystrix,但这个整合其实是“不完整”,因为它默认不带有监控端点,如果你在使用Feign的同时,也想使用监控端点,需按照如下步骤操作:

  • 加依赖

          
           
            org.springframework.cloud
           
           
            spring-cloud-starter-netflix-hystrix
           
          
  • 在启动类上添加注解@EnableCircuitBreaker

  • application.yml 中添加如下配置:

    management:endpoints:  web:
    exposure:
      include: 'hystrix.stream'

可视化监控数据

至此,我们已可通过/actuator/hystrix.strem 端点观察Hystrix运行情况,但文字形式的监控数据很不直观。现实项目中一般都需要一个可视化的界面,这样才能迅速了解系统的运行情况。Hystrix提供了一个轮子——Hystrix Dashboard,它的作用只有一个,那就是将文字形式的监控数据转换成图表展示

编写Hystrix Dashboard

  • 加依赖

          
           
            org.springframework.cloud
           
           
            spring-cloud-starter-netflix-hystrix-dashboard
           
          
  • 加注解:@EnableHystrixDashboard

  • 写配置:

    # 端口随便写,这里只是表明下自己的端口规划而已server:port: 8030

启动后,访问http://localhost:8030/hystrix 即可看到类似如下的界面:

Hystrix Dashboard首页

将上文的/actuator/hystrix.stream 端点的地址贴到图中,并指定Title,然后点击Monitor Stream 按钮,即可看到类似如下的图表:

Hystrix Dashboard图表

图表解读

Hystrix图表解读

小技巧

如果对http://localhost:8030/hystrix 地址中的hystrix 小尾巴不满意怎么办?还记得Spring MVC的服务器端跳转(forward)吗?只需添加类似如下的Controller,就可以使用http://localhost:8030/ 访问到Hystrix Dashboard首页了。

@Controllerpublic class HystrixIndexController {  @GetMapping("")  public String index() {
return "forward:/hystrix";  }}

监控数据聚合-Turbine

至此,我们已实现监控数据的可视化,然而现阶段一次只能监控一个微服务实例,这显然不能适用于生产。为了能监控多个微服务,Netflix官方再次发挥造轮子的精神——它们又编写了一个组件,Turbine。

TIPS

吐槽一下,Turbine是一个“发布即死亡”的项目——2014年9月发布1.0.0后,2014年11月又迅速推出2.0.0.DP,之后基本就不维护了,至今已经4年没有提交过代码了。

Spring Cloud中,1.0.0以及2.0.0.DP两个版本都有使用。Turbine 1.0.0用于基于HTTP方式的数据收集(也就是本节讲的这种方式)Turbine 2.0.0.DP2则用于基于MQ方式的收集(这种方式很多人遇到问题,单独写一篇番外吧)

Turbine简介

Turbine是一个聚合Hystrix监控数据的工具,它可将所有相关/hystrix.stream端点的数据聚合到一个组合的/turbine.stream中,从而让集群的监控更加方便。

引入Turbine后,架构图如下:

Turbine架构图

TIPS

Turbine的GitHub:

编写Turbine Server

  • 加依赖

          
           
            org.springframework.cloud
           
           
            spring-cloud-starter-netflix-turbine
           
          
  • 加注解:@EnableTurbine

  • 写配置:

    server:port: 8031spring:application:  name: microservice-hystrix-turbineeureka:client:  service-url:
    defaultZone: http://localhost:8761/eureka/instance:  prefer-ip-address: trueturbine:# 要监控的微服务列表,多个用,分隔appConfig: microservice-consumer-movie,microservice-consumer-movie-feignclusterNameExpression: "'default'"

这样,Tubine即可聚合microservice-consumer-movie,microservice-consumer-movie-feign两个服务的/actuator/hystrix.stream 信息,并暴露在http://localhost:8031/turbine.stream,将该地址贴到Hystrix Dashboard上,即可看到类似如下的图表:

Turbine图表

配套代码

通用方式暴露/actuator/hystrix.stream 端点:

  • GitHub:
  • Gitee:

Feign暴露/actuaotr/hystrix.stream 端点:

  • GitHub:
  • Gitee:

Hystrix Dashboard:

  • GitHub:
  • Gitee:

Turbine:

  • GitHub:
  • Gitee:

本文首发

干货分享

全是干货

转载于:https://blog.51cto.com/10180481/2345626

转载地址:https://blog.csdn.net/weixin_34124651/article/details/91655515 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:自定义标签栏
下一篇:ssh登陆限制规则

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.36.148.246]2022年07月31日 19时57分45秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

linux编辑关机脚本,Linux关机时执行指定脚本(亲测有效) 2019-12-01 04:38:16
linux 内核开logo大小,请教 :linux启动时的logo 2019-12-01 04:38:16
怎样在linux系统解压软件,Linux下软件包的解压方式大全 2019-12-01 04:38:16
linux bochs 网络,Linux下Bochs的使用(转载) 2019-12-01 04:38:16
php可扩展名,PHP如何获得文件扩展名 2019-12-01 04:38:14
oracle 安装tfa,安装Oracle AHF工具 2019-12-01 04:38:14
oracle 备份数据 dba,Oracle DBA 数据库备份与恢复学习笔记 2019-12-01 04:38:14
网站php怎么升级,怎样进行PHPWEB软件升级 2019-12-01 04:38:14
PHP程序设计网页设计,html简介及php网页程序设计.ppt 2019-12-01 04:38:14
linux 的文件格式,Linux命令基本格式(详解版) 2019-12-01 04:38:14
oracle11g数据库登录01017,windows oracle11g数据库使用sqlplus登录的时候出现ora-01017报错... 2019-12-01 04:38:12
synonymous oracle,oracle dblink 2019-12-01 04:38:12
oracle standby logfile,ORACLE 11gR2下ADG redo&standby log维护 2019-12-01 04:38:13
oracle 用户输入数字,shell 如何判断用户从键盘输入的变量是否为数字 2019-12-01 04:38:13
oracle 10g 异常终止,win10系统安装oracle10g提示程序异常终止的设置技巧 2019-12-01 04:38:13
php模板数组长度判断,php数组是否存在指定字符与数组长度检测实例_PHP教程 2019-12-01 04:38:11
php端口怎么查看进程,Linux_批处理 进程端口查看,直接将下面的代码,保存为port - phpStudy... 2019-12-01 04:38:11
php验证密码没有特殊符号,JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位... 2019-12-01 04:38:11
python selenium判断网页加载,python+selenium采集动态加载(懒加载)的页面内容 2019-12-01 04:38:11
php会话管理实验心得,总结10篇常用的会话控制实例 2019-12-01 04:38:12