`

hystrix的dashboard和turbine监控

阅读更多

    当我们的应用程序使用了hystrix后,每个具体的hystrixCommand命令执行后都会产生一堆的监控数据,比如:成功数,失败数,超时数以及与之关联的线程池信息等。既然有了这些监控数据数据,那么我们应该如何进行查看呢?答案当然是通过hystrix dashboard 来进行查看,但hystrix dashboard只能查看单个应用内的服务信息,这个显然是不够的,因此我们需要一个能够将系统内多个服务的监控数据汇总到hystrix dashboard上,这个时候就应该使用turbine.

 

实现功能

    假设我们存在服务消费方  product-consumerorder-consumer,且都使用了hystrix
    1、查看单个服务的 hystrix dashboard 信息

          |- 即 product-consumer 只部署在一台机器上
    2、查看单个集群的 hystrix dashboard 信息

          |- 即 product-consumer 部署在了多台机器上
    3、查看多个集群的 hystrix dashboard 信息

          |- 即 product-consumer 和 order-consumer 都部署在了 1台~多台 机器上
    4、查看所有集群的 hystrix dashboard 信息
          |- 查看这个注册中心中所有的服务消费者的监控数据

 

前置条件

hystrix dashboard url 的格式 

监控图标的指标信息


 

一、查看单个服务的 hystrix dashboard 的信息

1、代码结构:

 

2、hystrix dashboard程序的编写 ,注册中心、提供者和消费者略

   1、引入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    主要是引入  spring-cloud-starter-netflix-hystrix-dashboard  这个依赖

 

   2、启动上增加  @EnableHystrixDashboard 注解

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrixDashboard
public class ProductHystrixDashboard8097Application {
	public static void main(String[] args) {
		SpringApplication.run(ProductHystrixDashboard8097Application.class, args);
	}
}

 

   3、配置文件(application.yml)没有什么需要注意的,注册到eureka上即可。

   4、运行结果


 

二、查看单个集群的 hystrix dashboard 信息

1、代码结构

2、服务提供者和注册中心略

3、服务消费者

  1、java代码就是一个简单的调用远程服务(略)

  2、配置文件的写法

 

server:
  port: 8100

eureka:
  client:
    service-url:
      defaultZone : http://${security.user.name}:${security.user.password}@localhost:8761/eureka/
  instance:
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${server.port}
    lease-renewal-interval-in-seconds: 3
    lease-expiration-duration-in-seconds: 9
    metadata-map:
      cluster: PRODUCT

security:
  user:
    name: root
    password: admin
spring:
  application:
    name: product-consumer
    需要注意: eureka.instance.metadata-map.cluster 的值,在 turbine 工程中这个值被使用到了

4、turbine 工程的写法

   1、引入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

   2、增加 @EnableHystrixDashboard @EnableTurbine 注解

@SpringBootApplication
@EnableDiscoveryClient
@EnableHystrixDashboard
@EnableTurbine
public class ProductHystrixDashboard8101Application {
	public static void main(String[] args) {
		SpringApplication.run(ProductHystrixDashboard8101Application.class, args);
	}
}

   3、配置文件的写法

server:
  port: 8101

eureka:
  client:
    service-url:
      defaultZone : http://${security.user.name}:${security.user.password}@localhost:8761/eureka/
  instance:
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${server.port}

security:
  user:
    name: root
    password: admin
spring:
  application:
    name: product-hystrix-turbine-dashboard-8101

logging:
  level:
    org.hibernate : info
    org.hibernate.type.descriptor.sql.BasicBinder : trace
    org.hibernate.type.descriptor.sql.BasicExtraator : trace

info:
  app:
    name: "product-hystrix-turbine-dashboard-8101"
    description: "product-hystrix-turbine-dashboard-8101程序"
    version: "0.0.1"

turbine:
  app-config: product-consumer
  aggregator:
    cluster-config: PRODUCT
  combine-host-port: true
  cluster-name-expression: metadata['cluster']

    注意:

            1、主要最后一段配置是和turbine相关,即 turbine 开头的配置

            2、turbine.app-config: 后方写的是服务名,即存在hystrim的服务的spring.application.name的值

            3、turbine.aggregator.cluster-config: 需要聚合的集群的名字列表,和服务消费者里面的eureka.instance.metadata-map.cluster的值一致

           4、turbine.cluster-name-expression: 获取集群名称的表达式,此处指的是获取元数据cluster的值。

            5、 turbine.combine-host-port: 为true 表示可以让同一主机上的服务通过主机名和端口号的组合来进行区分

 5、整体代码架构


 

    需要理清上面各个线的对应关系。

6、运行结果


 

三、查看多个集群的 hystrix dashboard 信息

              服务注册中心、服务提供者、服务消费者和单个集群的配置是一样的。

              turbine 工程中的yml配置

 

turbine:
  app-config: product-consumer,order-consumer
  aggregator:
    cluster-config: PRODUCT
  combine-host-port: true
  cluster-name-expression: metadata['cluster']
         app-config: 如果有多个,中间以逗号分隔

 

         cluster-config:如果有多个,中间以都好分隔

         hystrix dashboard页面上的访问路径: http://turbine:port/turbine.stream?cluster=[cluster-config中的值]

 

四、查看所有集群的 hystrxi dashboard 监控信息

  服务注册中心、服务提供者、服务消费者和单个集群的配置是一样的。             

  服务消费者工程不需要 eureka.instance.metadata-map.cluster的配置了。

  turbine 工程中的yml配置

turbine:
  app-config: product-consumer,order-consumer
  combine-host-port: true
  cluster-name-expression: "'default'"

    app-config:需要聚合的服务名,有多个中间以 逗号 分开

    cluster-name-expression 的值修改成  default

    hystrix dashboard页面上的访问路径: http://turbine:port/turbine.stream

 

完整代码

   上方四个工程的完整代码如下: https://gitee.com/huan1993/spring-cloud-parent/tree/master/hystrix-dashboard-turbine

 

 

 

  • 大小: 64.5 KB
  • 大小: 61.1 KB
  • 大小: 48.4 KB
  • 大小: 2.2 MB
  • 大小: 86.5 KB
  • 大小: 229 KB
  • 大小: 2.7 MB
分享到:
评论

相关推荐

    Hystrix-dashboard+turbine-web+说明文档

    在微服务架构中,Hystrix 和 Turbine 是两个非常重要的工具,它们为分布式系统提供了弹性和监控能力。本文将详细介绍这两个组件以及如何通过 `Hystrix-dashboard` 和 `turbine-web` 来实现有效的监控和聚合监控。 *...

    Hystrix Dashboard的使用-代码部分.zip

    在微服务架构中,Hystrix Dashboard 和 Turbine 是两个重要的工具,用于监控服务的健康状态和性能。本文将深入探讨这两个组件,并结合提供的源代码,解析它们在实际项目中的应用。 **Hystrix Dashboard** Hystrix ...

    springcloud 熔断监控Hystrix Dashboard和Turbine

    在SpringCloud的生态系统中,Hystrix是用于实现服务容错管理的重要工具,它提供了熔断、降级、隔离和监控等功能,确保服务在高并发或服务故障时能够保持系统的稳定性和可用性。 Hystrix Dashboard是Hystrix提供的一...

    04Hystrix Dashboard:断路器执行监控1

    这些依赖分别用于Eureka服务发现,Hystrix Dashboard本身以及Spring Boot的Actuator模块,Actuator提供了一套健康检查和监控端点,其中包括Hystrix的`hystrix.stream`。 接着,在`application.yml`配置文件中,你...

    SpringCloud -Hystrix监控面板及数据聚合(Turbine)介绍与使用示例

    Hystrix Dashboard 和 Turbine 是配套的监控工具,帮助开发者实时监控服务的运行状态,确保系统的稳定性和高可用性。下面将详细介绍这两个工具的功能、使用方法以及集成步骤。 **Hystrix Dashboard** Hystrix ...

    SpringCloud10-2 Hystrix整合Dashboard教程

    7. **测试与使用**:启动服务,通过浏览器访问Hystrix Dashboard,输入Turbine的聚合URL,即可看到服务的实时监控数据,包括请求成功率、错误率、响应时间和断路器状态等。 Hystrix Dashboard提供的实时监控对于...

    SpringCloud-使用熔断器防止服务雪崩-Ribbon和Feign方式示例代码.zip

    在实际应用中,我们可以使用 Hystrix Dashboard 和 Turbine 监控熔断器的状态和系统性能。Hystrix Dashboard 可以展示每个 Hystrix 命令的执行情况,包括成功率、响应时间等指标。Turbine 是一个聚合多个 Hystrix ...

    SpringCloud Hystrix-Dashboard仪表盘的实现

    SpringCloud Hystrix-Dashboard 仪表盘的实现 SpringCloud Hystrix-...Hystrix-Dashboard 仪表盘是 SpringCloud 中的一种强大且灵活的监控工具,能够帮助开发者快速发现系统中存在的问题,提高系统的可靠性和稳定性。

    Hystrix监控异常处理集.zip

    总的来说,处理Hystrix监控异常需要对Spring Cloud Hystrix和Turbine有深入的理解,同时具备一定的排查问题和调试能力。通过本文的介绍,以及"附件"提供的资源,相信你可以顺利解决Hystrix监控异常,保障微服务架构...

    微服务商城项目最新学习-基础+高级+高可用

    以及利用Hystrix Dashboard和Turbine监控服务性能和健康状态,预防系统故障。 项目提供的"谷粒商城-2020.8月全新升级完结版.docx"文档,很可能是项目实例的详细说明,包括了商城系统的设计、实施细节和升级过程。...

    HystrixDashboard图表化hystrix/turbine.stream问题探索

    温疫流行,家中休息期间,再次进行微服务分布架构,HystrixDashboard图表化hystrix/turbine.stream,大部分情况不能获取数据,指示Unable to connect to Command Metric Stream 之前,调试通过的。spring boot版本...

    SpringCloud微服务基础与应用.zip

    6. **监控**:使用Spring Cloud Actuator监控服务的健康状况和性能指标,以及使用Hystrix Dashboard和Turbine监控断路器状态。 五、总结 SpringCloud为微服务架构提供了全面的支持,通过集成这些组件,开发者可以...

    SpringCloud整合

    - **测试与监控**:利用Hystrix Dashboard和Turbine监控服务健康状况,及时发现问题。 - **API设计**:遵循RESTful原则设计API接口,提高可维护性和扩展性。 这个"SpringCloud整合"的资源包很可能包含了上述组件的...

    springcloud hystrix 断路由

    4. **监控(Monitoring)**: Hystrix Dashboard 和 Turbine 提供实时监控界面,展示服务的健康状况、调用统计等信息,帮助开发者快速定位和解决问题。 5. **短路(Short-circuiting)**: 当请求量超过阈值时,...

    springcloud微服务框架+服务模版

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

    spring-cloud-examples

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

    spring-cloud-netflix-hystrix应用

    6. **集成监控**:集成Hystrix Dashboard和Turbine,实现对Hystrix指标的可视化监控。 通过以上步骤,我们可以有效地利用Spring Cloud Netflix Hystrix构建一个健壮的微服务架构,增强系统的容错性,确保在面临高...

    springcloud feign整合hystrix(服务降级).doc

    为了监控Hystrix的工作状态,可以引入Hystrix Dashboard和Turbine。Hystrix Dashboard是一个实时的监控界面,Turbine则是用来聚合多个Hystrix流的工具。添加相应的依赖并配置后,可以通过Dashboard来查看每个服务...

    SpringCloud(Hystrix服务降级)

    **Hystrix Dashboard 和 Turbine**: Hystrix Dashboard 是一个实时监控界面,可以展示所有 Hystrix 命令的运行情况。Turbine 是一个聚合多个 Hystrix Dashboard 数据的工具,用于大型分布式系统中的集中监控。 总...

Global site tag (gtag.js) - Google Analytics