`

跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

 
阅读更多

说明:SpringCloud系列笔者自学系列,学习来源是周立的博客  http://www.itmuch.com/ 。而此处转载其博客只是为了方便自己以后的学习。

本篇来源 http://www.itmuch.com/spring-cloud/finchley-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的同时,也想使用监控端点,需按照如下步骤操作:

  • 加依赖

     
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
    </dependency>
  • 在启动类上添加注解@EnableCircuitBreaker

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

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

可视化监控数据

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

编写Hystrix Dashboard

  • 加依赖

     
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
    </dependency>
  • 加注解:@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首页了。

 
@Controller
public 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:https://github.com/Netflix/Turbine

编写Turbine Server

  • 加依赖

     
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
    </dependency>
  • 加注解:@EnableTurbine

  • 写配置:

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

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

Turbine图表

配套代码

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

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

Hystrix Dashboard:

Turbine:

相关文章

 

 

分享到:
评论

相关推荐

    spring-cloud-netflix-hystrix应用

    《深入理解Spring Cloud Netflix Hystrix:构建弹性微服务架构》 在当今的软件开发领域,微服务架构已经成为主流,而Spring Cloud作为Java生态中的微服务解决方案,深受开发者喜爱。其中,Spring Cloud Netflix ...

    spring-cloud-netflix-hystrix-dashboard-2.2.3.RELEASE.jar

    spring-cloud-netflix-hystrix-dashboard-2.2.3.RELEASE.jar

    SpringCloud-2.0-order-hystrix-ribbon-8011.zip

    在这个名为"SpringCloud-2.0-order-hystrix-ribbon-8011.zip"的项目中,我们主要探讨的是如何利用Hystrix实现服务间的短路保护,以及Ribbon作为客户端负载均衡器的作用。 Hystrix是Netflix开源的一款强大的断路器库...

    Spring Cloud Finchley SR2全套(集成Spring Gateway)

    基于Spring Cloud Finchley SR2 Spring Boot 2.0.7的最新版本。 核心基础项目内实现类自定义的权限注解,配合RBAC权限模型+拦截器即可实现权限的控制,具体的参考项目中的实现。同时也封装了一些顶层类和结果集等。...

    springcloud-ribbon-feign-hystrix-zuul-config

    在Spring Cloud框架中,"springcloud-ribbon-feign-hystrix-zuul-config"这个标题涉及到四个关键组件:Ribbon、Feign、Hystrix和Zuul,以及配置管理Config。这些组件都是构建分布式系统时常用的服务发现、客户端负载...

    spring-cloud-examples

    hystrix-dashboard-turbine:熔断监控Hystrix Dashboard和Turbine的示例 spring-cloud-config-git:配置中心git版本示例 spring-cloud-config-svn-refresh:配置中心svn版本示例,客户端refresh版本示例 spring-...

    springcloud2-hystrix-feign-zuul.zip

    标题 "springcloud2-hystrix-feign-zuul.zip" 提示了我们这是一组关于Spring Cloud 2的实现,具体涉及Hystrix、Feign和Zuul组件的实践项目。Spring Cloud 是一个用于构建分布式系统的服务发现、配置管理和微服务连接...

    spring-cloud-starter-netflix-hystrix-2.1.0.RELEASE.jar

    spring-cloud-starter-netflix-hystrix-2.1.0.RELEASE

    spring-cloud-starter-netflix-hystrix-dashboard-2.1.0.RELEASE.jar

    spring-cloud-starter-netflix-hystrix-dashboard-2.1.0.RELEASE

    springcloud-learning-master.zip springcloud学习合集

    本压缩包"springcloud-learning-master.zip"是一个关于SpringCloud学习的资源合集,包含了一系列的例子和教程,适合想要深入理解和掌握SpringCloud技术的开发者。 首先,我们要了解SpringCloud的基础概念。Spring...

    spring-cloud-netflix-hystrix-2.1.0.RELEASE.jar

    spring-cloud-netflix-hystrix-2.1.0.RELEASE

    springcloud-starter-netflix-hystrix-demo

    总的来说,“springcloud-starter-netflix-hystrix-demo”项目旨在帮助开发者理解如何在Spring Cloud环境中使用Hystrix进行服务保护,并结合Swagger实现API的调用。通过这个项目,你可以学习到微服务架构中服务治理...

    spring-cloud-examples-master

    《Spring Cloud实战详解:基于spring-cloud-examples-master的深度解析》 在当今的软件开发领域,微服务架构已经成为主流趋势,而Spring Cloud作为Java生态中的微服务治理框架,深受开发者们的喜爱。本篇文章将深入...

    spring-cloud-demo-master.zip

    本篇文章将围绕"spring-cloud-demo-master.zip"这个入门项目,深入解析其中的关键组件——Eureka、Zuul、JPA、Hystrix以及File-Upload,旨在帮助读者快速掌握Spring Cloud的基础应用。 一、Eureka:服务注册与发现 ...

    基于Spring Cloud(Finchley版本)架构体系

    基于Spring Cloud(Finchley版本)架构体系,整合各微服务基础组件的最新最全的脚手架工程。微服务架构: Spring Cloud全家桶 + Spring boot 2.x + Oauth2 + Mybatis + Druid + Mysql + Sharding-JDBC 3.x + Redis ...

    springcloud-learning-master.zip

    《Spring Boot + Spring Cloud 全面学习指南》 在当今的微服务架构中,Spring Boot 和 Spring Cloud 是两个至关重要的技术。Spring Boot 提供了一种快速构建独立的、生产级别的基于Spring的应用程序的方式,而...

    spring-cloud-hystrix-feign(注册中心、member、feign-order).zip

    然后,"SpringCloud-2.0-order-hystrix-feign-8012"展示了如何使用Feign和Hystrix进行服务间调用。Feign是一个声明式Web服务客户端,使得编写Web服务客户端就像编写Java接口一样简单。在Order服务中,我们可以定义一...

    SpringCloud-Learning-master.zip

    《SpringCloud深度学习指南》 SpringCloud作为微服务架构中的热门框架,因其强大的服务治理功能和易用性,被广大开发者广泛采用。本资源“SpringCloud-Learning-master.zip”是程序猿DD关于SpringCloud的学习资料,...

    spring-cloud使用的各种示例

    - [springcloud(五):熔断监控Hystrix Dashboard和Turbine](http://www.ityouknow.com/springcloud/2017/05/18/hystrix-dashboard-turbine.html) - [springcloud(六):配置中心git示例]...

    spring-cloud-starter-netflix-zuul.zip已经闭源的jar包,pom

    Spring Cloud是Spring框架针对分布式系统解决方案的一系列集成工具集合,其中包括Eureka(服务发现)、Hystrix(断路器)、Zuul(API网关)等组件。Zuul的核心功能在于为微服务提供动态路由、过滤和安全控制,它允许...

Global site tag (gtag.js) - Google Analytics