涡轮仪表板未加载 Spring Cloud 微服务中的聚合
Posted
技术标签:
【中文标题】涡轮仪表板未加载 Spring Cloud 微服务中的聚合【英文标题】:Turbine Dashboard Is not Loading for Aggregation in Spring Cloud Microservice 【发布时间】:2018-05-19 08:08:06 【问题描述】:我正在尝试使用 Spring MVC 和 Spring Boot 框架开发 Spring Cloud 微服务。以及用于 spring cloud 的 Eureka server 、 Zuul 、 Ribbon 、 hystrix 和 Turbine 。我已经开发了一个微服务并且只实现了 hystrix 仪表板。我可以使用 hystrix 仪表板。现在我正在实施更多服务。所以我选择涡轮机进行聚合监控。但它没有得到仪表板。我在单独的 spring boot 项目中实现了涡轮机。
我的 pom.xml 包含,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>
我的主类包含,
@SpringBootApplication
@EnableHystrixDashboard
@EnableCircuitBreaker
@EnableTurbine
public class ZTurbineClientApplication
public static void main(String[] args)
SpringApplication.run(ZTurbineClientApplication.class, args);
而我的涡轮项目 application.properties 文件包含,
server.port=8085
spring.application.name=espace-Turbine
eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
turbine:
aggregator:
clusterConfig: APPCLUSTER
app-config: espaceService1,espaceService2
instanceUrlSuffix.APPCLUSTER: /hystrix.stream
和我之前的第一个服务的 application.properties 文件一样
eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
spring.application.name=espaceService1
server.port=8080
eureka:
instance:
prefer-ip-address: true
leaseRenewalIntervalInSeconds: 3
leaseExpirationDurationInSeconds: 3
metadata-map:
cluster: APPCLUSTER
第二个服务的应用属性文件包含,
eureka.client.serviceUrl.defaultZone=http://localhost:8071/eureka/
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
spring.application.name=espaceService2
server.port=8081
eureka:
instance:
prefer-ip-address: true
leaseRenewalIntervalInSeconds: 3
leaseExpirationDurationInSeconds: 3
metadata-map:
cluster: APPCLUSTER
这些是我的实现细节。
在我获取 URL“http://localhost:8085/hystrix.dashboard”之后。并粘贴“http://localhost:8085/turbine.stream?cluster=APPCLUSTER”。但出现“无法连接到命令度量流”之类的错误。在下面添加屏幕截图。
【问题讨论】:
您是否将涡轮机指向 hystrix.stream?有断路器的代码路径是否被执行过? 我已经使用 hystrix 实现了我的服务。之后,我尝试在 hystrix 仪表板页面中使用turbine.so 聚合监控,我试图让turbine.stream..service 和涡轮项目是分开的。在服务中,我实施了断路器 【参考方案1】:您需要从逗号分隔的服务名称中删除空格
turbine.aggregator.cluster-config=espace-Second_Microservice,espaceFirst_Microservice
您不能聚合来自不同集群名称的流,要么在 espace-Second_Microservice 和 espace-First_Microservice 中使用一个集群名称,要么根本不使用集群。
To define one cluster name use below config
eureka:
instance:
prefer-ip-address: true
leaseRenewalIntervalInSeconds: 3
leaseExpirationDurationInSeconds: 3
metadata-map:
cluster: APPCLUSTER
使用下面提到的涡轮机配置
turbine:
aggregator:
clusterConfig: APPCLUSTER
app-config: espace-Second_Microservice,espace-First_Microservice
instanceUrlSuffix.APPCLUSTER: /hystrix.stream
在 Hystrix Dashboard 中使用 http://turbine host:turbine Port/turbine.stream?cluster=APPCLUSTER
【讨论】:
是的。我按照上面的修改了。但屏幕上仍然出现“无法连接到命令度量流”的错误。也很抱歉回复晚了。我正在修改代码。你能看看上面吗 您正在混合配置 yaml 文件和属性文件。如果使用 .properties 文件,则需要以属性文件格式定义配置 eureka.instance.preferIpAddress=true eureka.instance.leaseRenewalIntervalInSeconds=3 eureka.instance.leaseExpirationDurationInSeconds=3 eureka.instance.metadataMap.cluster=APPCLUSTER @PrateekShrivastava - 请您在这里指导我:***.com/questions/61431036/… ?以上是关于涡轮仪表板未加载 Spring Cloud 微服务中的聚合的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Turbine AMQP 不适用于 Hystrix 仪表板