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

Posted

技术标签:

【中文标题】Hystrix/Turbine 仪表板上的多个服务?【英文标题】:Multiple services on a Hystrix/Turbine dashboard? 【发布时间】:2015-12-25 19:42:20 【问题描述】:

我试图了解使用 Spring Boot 运行的 2 个不同服务。这两项服务都在 Eureka 中很好地注册了,现在我想在 Turbine Web 应用程序中绘制一些 Hystrix 数据。

使用 Turbine 测试单个服务时效果很好:

http://localhost:2222/hystrix.stream (service1)
http://localhost:3333/hystrix.stream (service2)

我试图在仪表板上获得一个视图,该视图绘制了这两个服务,但无论我尝试什么,都只绘制了涡轮配置中的第一个服务。

turbine:
   clusterNameExpression: new String('default')
   appConfig: service1,service2

我在尝试将数据输入到两种服务的turtle.stream 时似乎碰壁了。

任何提示或提示?

【问题讨论】:

【参考方案1】:

为了回答我自己的问题,Turbine 似乎无法监控同一主机上的更多服务,因为它绑定到主机名。见https://github.com/Netflix/Turbine/issues/88

Turbine 有 2 种运行模式:

拉;来自不同服务流的数据由 Turbine 提取 推;使用 RabbitMQ 等 AMQP 代理将来自不同服务的数据推送到 Turbine 服务器

一种解决方法是使用能够完全满足我需要的 TurbineAMQP。它涉及更多的基础设施,但运行良好!

【讨论】:

现在有一个名为 turbine.combineHostPort=true 的属性可以解决您的问题,而无需使用 RabbitMQ。 Here 是 Spring Cloud Netflix 项目的相应问题。【参考方案2】:

首先,我不认为 Turbine 像 Marco 所说的那样是主机专有的

... Turbine 似乎无法监控同一主机上的更多服务,因为它绑定到主机名

我使用 Hystrix Dashboard App(不推荐)实现了 Turbine,聚合了 2 个具有相同 spring.application.name 的服务。

我发现 Turbine 收集 hystrix 流的方式是,每个 Turbine 应用程序将在 Eureka Registry 中查找具有给定名称的服务,turbine.appConfig in application.properties,默认为 spring.application.name 或显式为 eureka.instance.appname您的服务,无论它们的主机如何。至此,涡轮气流已准备就绪。

将返回您在上一步中的请求中作为服务 ID 的名称列表,其中至少一个应与您在 turbine.aggregator.clusterConfig 中提供的名称列表匹配。

当您在 Hystrix Dashboard 主页上键入 http://[turbine-app-host:port]/turbine.stream?cluster=[cluster name] 时,cluster name 参数应该是来自 turbine.aggregator.clusterConfig 的匹配名称之一。

【讨论】:

以上是关于Hystrix/Turbine 仪表板上的多个服务?的主要内容,如果未能解决你的问题,请参考以下文章

第四篇(续):熔断监控Hystrix Dashboard和熔断聚合监控Hystrix Turbine

史上最简单的SpringCloud教程 | 第十三篇: 断路器聚合监控(Hystrix Turbine)

业余草 SpringCloud教程 | 第十二篇: 断路器聚合监控(Hystrix Turbine)(Finchley版本)

springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin

springcloud的Hystrix turbine断路器聚合监控实现(基于springboot2.02版本)

SpringCloud - Spring Cloud Netflix 之 Hystrix ;turbine