如何向 Turbine 添加额外的 Hystrix 指标聚合

Posted

技术标签:

【中文标题】如何向 Turbine 添加额外的 Hystrix 指标聚合【英文标题】:How to add into Turbine additional Hystrix metrics aggregations 【发布时间】:2015-08-15 08:45:14 【问题描述】:

我的设置是使用 netflix 库的 Spring Boot Cloud 我设法让 Turbine 从一项服务中聚合 Hystrix 指标。但是,当我添加更多服务时,我看不到它们。

这是我的设置(也将其上传到 github: Project On Github

服务 1:

FlightIntegrationService:

@SpringBootApplication
@EnableCircuitBreaker
@EnableDiscoveryClient
@ComponentScan("com.bootnetflix")
public class FlightIntegrationApplication 
..


application.yaml

server:
  port: 0

eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    metadataMap:
      instanceId: $vcap.application.instance_id:$spring.application.name:$spring.application.instance_id:$random.value
  client:
    registryFetchIntervalSeconds: 5

bootstrap.yaml

spring:
  application:
    name: flight-integration-service

服务 2:

优惠券服务:

@SpringBootApplication
@EnableCircuitBreaker
@EnableDiscoveryClient
@ComponentScan("com.bootnetflix")
public class CouponServiceApp 
..


application yaml:

server:
  port: 0

eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
    metadataMap:
      instanceId: $vcap.application.instance_id:$spring.application.name:$spring.application.instance_id:$random.value
  client:
    registryFetchIntervalSeconds: 5

尤里卡应用服务:

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication  



Hystrix dashboard service:

    @SpringBootApplication
    @EnableHystrixDashboard
    @Controller
    public class HystrixDashboardApplication  

application.yaml:

info:
  component: Hystrix Dashboard

endpoints:
  restart:
    enabled: true
  shutdown:
    enabled: true

server:
  port: 7979

logging:
  level:
    ROOT: INFO
    org.springframework.web: DEBUG

eureka:
  client:
    region: default


    preferSameZone: false

    us-east-1:
      availabilityZones: default

  instance:
    virtualHostName: $spring.application.name

bootstrap.yaml

spring:
  application:
    name: hystrixdashboard

最后是涡轮服务:

  EnableAutoConfiguration
    @EnableTurbine
    @EnableEurekaClient
    @EnableHystrixDashboard
    public class TurbineApplication 

application.yaml:

info:
  component: Turbine

PREFIX:

endpoints:
  restart:
    enabled: true
  shutdown:
    enabled: true

server:
  port: 8989

management:
  port: 8990



eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10
  client:
      serviceUrl:
        defaultZone: http://localhost:8761/eureka/



#turbine:
 # aggregator:
  #  clusterConfig: FLIGHT-INTEGRATION-SERVICE,COUPON-SERVICE
  #appConfig: flight-integration-service,coupon-service


#turbine:
#  clusterNameExpression: 'default'
 # appConfig: flight-integration-service,coupon-service

turbine:
  appConfig: coupon-service,flight-integration-service
  clusterNameExpression: new String('default')




#As you can see I tried diff configurations.

我做错了什么?为什么我实际上不能汇总这两个服务 hystrix 指标(飞行集成服务、优惠券服务) 谢谢。

【问题讨论】:

您是否尝试过取消注释带有turber.aggregator 的部分,然后将?cluster=FLIGHT-INTEGRATION-SERVICE?cluster=COUPON-SERVICE 添加到您放在hystrix 仪表板中的turber url? 但如果我添加 LIGHT-INTEGRATION-SERVICE 或 ?cluster=COUPON-SERVICE ,我将一次聚合一项服务。我想在涡轮机上看到所有服务。 默认情况下涡轮机不是这样构建的。 spring-cloud-netflix-turbine-amqp 聚合所有服务。 github.com/spring-cloud/spring-cloud-netflix/tree/master/… 你能告诉我一个例子或一个链接,我应该如何以一种让涡轮将所有 hystrix commmands 指标聚合到 hystrixdashboard 的方式来实现它? github.com/spring-cloud-samples/customers-stores/blob/master/… 使用 spring-cloud-netflix-turbine-amqp。这里有一些介绍文档projects.spring.io/spring-cloud/docs/1.0.1/… 【参考方案1】:

由@spencergibb 建议解决。我向每个客户端添加了 spring-boot-starter-amqp 的依赖项并创建了 rabbitMQ 代理。 Turbine 正在通过 amqp 聚合所有消息,我能够看到在我的 hystrix 仪表板服务器上聚合的所有 Hystrix 命令

【讨论】:

能否请您在 github 中分享您的工作代码示例...我也遇到同样的问题...

以上是关于如何向 Turbine 添加额外的 Hystrix 指标聚合的主要内容,如果未能解决你的问题,请参考以下文章

使用Turbine对集群进行监控

Hystrix集群及集群监控turbine

java B2B2C Springcloud电子商城系统:熔断监控Hystrix Dashboard和Turbine

hystrix-turbine 监控的使用

Hystrix/Turbine 仪表板上的多个服务?

Turbine AMQP 不接收 Hystrix 流