Spring Cloud Hystrix监控数据聚合(十)
2018-04-02 17:08
751 查看
如何利用Turbine工具监控数据的聚合:
回顾上一架构图如下:
我们构建的内容包括:
eureka-server:服务注册中心
eureka-client:服务提供者
eureka-consumer-ribbon-hystrix:使用ribbon和hystrix实现的服务消费者
hystrix-dashboard:用于展示eureka-consumer-ribbon-hystrix服务的Hystrix数据
加入依赖jar包
修改启动主类,并使用@EnableTurbine注解开启Turbine。
在application.properties加入eureka和turbine的相关配置,具体如下:
参数说明:
turbine.app-config参数指定了需要收集监控信息的服务名;
turbine.cluster-name-expression 参数指定了集群名称为default,当我们服务数量非常多的时候,可以启动多个Turbine服务来构建不同的聚合集群,而该参数可以用来区分这些不同的聚合集群,同时该参数值可以在Hystrix仪表盘中用来定位不同的聚合集群,只需要在Hystrix Stream的URL中通过cluster参数来指定;
turbine.combine-host-port参数设置为true,可以让同一主机上的服务通过主机名与端口号的组合来进行区分,默认情况下会以host来区分不同的服务,这会使得在本地调试的时候,本机上的不同服务聚合成一个服务来统计。
在完成了上面的内容构建之后,我们来体验一下Turbine对集群的监控能力。分别启动eureka-server、eureka-client、eureka-consumer-ribbon-hystrix、turbine以及hystrix-dashboard。访问Hystrix Dashboard,并开启对http://localhost:8989/turbine.stream的监控,这时候,我们将看到针对服务eureka-consumer-ribbon-hystrix`的聚合监控数据。
而此时的架构如下图所示:
从图中我们可以看到,这里多了一个重要元素:RabbitMQ。下面,我们可以来构建一个新的应用来实现基于消息代理的Turbine聚合服务,具体步骤如下:
创建一个工程名为 turbine-amqp。
修改jar包
修改启动类
配置application.properties文件:
对于Turbine的配置已经完成了,下面我们需要对服务消费者eureka-consumer-ribbon-hystrix做一些修改,使其监控信息能够输出到RabbitMQ上。这个修改也非常简单,只需要在pom.xml中增加对spring-cloud-netflix-hystrix-amqp依赖,具体如下:
在完成了上面的配置之后,我们可以继续之前的所有项目(除turbine以外),并通过Hystrix Dashboard开启对http://localhost:8989/turbine.stream的监控,我们可以获得如之前实现的同样效果,只是这里我们的监控信息收集时是通过了消息代理异步实现的。
回顾上一架构图如下:
我们构建的内容包括:
eureka-server:服务注册中心
eureka-client:服务提供者
eureka-consumer-ribbon-hystrix:使用ribbon和hystrix实现的服务消费者
hystrix-dashboard:用于展示eureka-consumer-ribbon-hystrix服务的Hystrix数据
两种聚合方式
通过HTTP收集聚合
创建一个名为turbine的工程。加入依赖jar包
<parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Dalston.SR1</version> <relativePath /> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
修改启动主类,并使用@EnableTurbine注解开启Turbine。
在application.properties加入eureka和turbine的相关配置,具体如下:
参数说明:
turbine.app-config参数指定了需要收集监控信息的服务名;
turbine.cluster-name-expression 参数指定了集群名称为default,当我们服务数量非常多的时候,可以启动多个Turbine服务来构建不同的聚合集群,而该参数可以用来区分这些不同的聚合集群,同时该参数值可以在Hystrix仪表盘中用来定位不同的聚合集群,只需要在Hystrix Stream的URL中通过cluster参数来指定;
turbine.combine-host-port参数设置为true,可以让同一主机上的服务通过主机名与端口号的组合来进行区分,默认情况下会以host来区分不同的服务,这会使得在本地调试的时候,本机上的不同服务聚合成一个服务来统计。
在完成了上面的内容构建之后,我们来体验一下Turbine对集群的监控能力。分别启动eureka-server、eureka-client、eureka-consumer-ribbon-hystrix、turbine以及hystrix-dashboard。访问Hystrix Dashboard,并开启对http://localhost:8989/turbine.stream的监控,这时候,我们将看到针对服务eureka-consumer-ribbon-hystrix`的聚合监控数据。
而此时的架构如下图所示:
通过消息代理收集聚合
Spring Cloud在封装Turbine的时候,还实现了基于消息代理的收集实现。所以,我们可以将所有需要收集的监控信息都输出到消息代理中,然后Turbine服务再从消息代理中异步的获取这些监控信息,最后将这些监控信息聚合并输出到Hystrix Dashboard中。通过引入消息代理,我们的Turbine和Hystrix Dashoard实现的监控架构可以改成如下图所示的结构:从图中我们可以看到,这里多了一个重要元素:RabbitMQ。下面,我们可以来构建一个新的应用来实现基于消息代理的Turbine聚合服务,具体步骤如下:
创建一个工程名为 turbine-amqp。
修改jar包
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-turbine-amqp</artifactId> </dependency> </dependencies>
修改启动类
@Configuration @EnableTurbine @SpringBootApplication @EnableDiscoveryClient public class TurbineApplication { public static void main(String[] args) { SpringApplication.run(TurbineApplication.class, args); } }
配置application.properties文件:
spring.application.name=turbine-amqp server.port=8989 management.port=8990 eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/
对于Turbine的配置已经完成了,下面我们需要对服务消费者eureka-consumer-ribbon-hystrix做一些修改,使其监控信息能够输出到RabbitMQ上。这个修改也非常简单,只需要在pom.xml中增加对spring-cloud-netflix-hystrix-amqp依赖,具体如下:
<dependencies> ... <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-netflix-hystrix-amqp</artifactId> </dependency> </dependencies>
在完成了上面的配置之后,我们可以继续之前的所有项目(除turbine以外),并通过Hystrix Dashboard开启对http://localhost:8989/turbine.stream的监控,我们可以获得如之前实现的同样效果,只是这里我们的监控信息收集时是通过了消息代理异步实现的。
相关文章推荐
- Spring Cloud架构教程 (二)Hystrix监控数据聚合
- Spring Cloud架构教程 (二)Hystrix监控数据聚合
- Spring Cloud架构教程 (二)Hystrix监控数据聚合
- Spring Cloud构建微服务架构:Hystrix监控数据聚合
- Spring Cloud构建微服务架构:Hystrix监控数据聚合【Dalston版】
- SpringCloud: 断路器聚合监控(Hystrix Turbine)
- SpringCloud之断路器聚合监控(Hystrix Turbine)
- SpringCloud之断路器聚合监控(Hystrix Turbine)
- Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine
- SpringCloud之断路器聚合监控Spring Cloud Hystrix Turbine实例
- SpringCloud 教程 (六)断路器聚合监控(Hystrix Turbine)
- SpringCloud之断路器聚合监控(Hystrix Turbine)
- Spring Cloud中使用Hystrix 线程隔离导致ThreadLocal数据丢失
- Spring Cloud中Hystrix仪表盘与Turbine集群监控
- Spring Cloud版——电影售票系统<五>Hystrix使用消息中间件RabbitMQ收集数据
- SpringCloud之断路器监控(Hystrix Dashboard) |第六章 -yellowcong
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- springcloud(五):熔断监控Hystrix Dashboard和Turbine