ITPub博客

首页 > 数据库 > 数据库开发技术 > Hystrix数据进行聚合展示-Turbine(HTTP方式)

Hystrix数据进行聚合展示-Turbine(HTTP方式)

原创 数据库开发技术 作者:HelloTech技术派 时间:2017-12-11 18:00:00 0 删除 编辑

背景

上一篇使用Hystrix Dashboard来展示Hystrix用于熔断的各项指标。通过Hystrix Dashboard,可以方便的查看服务实例的综合情况,但是,在实际的生产环境中,我们的服务是肯定需要做高可用的,而仅通过Hystrix Dashboard只能实现对服务单个实例的数据展现。那么对于多实例的情况,我们就需要将这些指标数据进行聚合。接下来将使用另外一个工具:Turbine来聚合指标数据。

依赖项目

  • 服务注册中心—— springcloud-eureka

  • 服务提供者—— springcloud-addition-service(加法计算服务模拟微服务)

  • 使用ribbon和hystrix实现的服务消费者—— springcloud-consumer-hystrix 端口9604

  • 用于展示服务消费者Hystrix数据的dashboard—— springcloud-hystrix-dashboard 端口9605

通过HTTP方式收集聚合

  • 创建一个标准的Spring Boot工程,命名为: springcloud-turbine,端口9700。

  • 编辑pom.xml,具体依赖内容如下:

  1.  <parent>

  2.    <groupId>org.springframework.cloud</groupId>

  3.    <artifactId>spring-cloud-starter-parent</artifactId>

  4.    <version>Dalston.SR1</version>

  5.    <relativePath /> <!-- lookup parent from repository -->

  6.  </parent>

  7.  <dependencies>

  8.    <dependency>

  9.      <groupId>org.springframework.cloud</groupId>

  10.      <artifactId>spring-cloud-starter-turbine</artifactId>

  11.    </dependency>

  12.    <dependency>

  13.      <groupId>org.springframework.boot</groupId>

  14.      <artifactId>spring-boot-starter-actuator</artifactId>

  15.    </dependency>

  16.  </dependencies>

  17.  <build>

  18.    <plugins>

  19.      <plugin>

  20.        <groupId>org.springframework.boot</groupId>

  21.        <artifactId>spring-boot-maven-plugin</artifactId>

  22.        <configuration>

  23.          <fork>true</fork>

  24.          <executable>true</executable>

  25.        </configuration>

  26.      </plugin>

  27.    </plugins>

  28.  </build>

  • 创建应用主类Server,并使用@EnableTurbine注解开启Turbine。

  1. @SpringBootApplication

  2. @EnableTurbine

  3. public class Server {

  4.    public static void main(String[] args) {

  5.        new SpringApplicationBuilder(Server.class).web(true).run(args);

  6.    }

  7. }

  • 在application.properties加入eureka和turbine的相关配置,具体如下:

  1. spring.application.name=springcloud-turbine

  2. logging.path=./logs

  3. server.port=9700

  4. eureka.client.serviceUrl.defaultZone=http://peer1:9600/eureka/,http://peer2:9600/eureka/,http://peer3:9600/eureka/

  5. turbine.app-config=springcloud-consumer-hystrix

  6. turbine.cluster-name-expression="default"

  7. turbine.combine-host-port=true

参数说明

  1. turbine.app-config参数指定了需要收集监控信息的服务名,如果有多个用英文的逗号分隔;

  2. turbine.cluster-name-expression 参数指定了集群名称为default,该参数可以用来区分这些不同的聚合集群,同时该参数值可以在Hystrix仪表盘中用来定位不同的聚合集群,只需要在Hystrix Stream的URL中通过cluster参数来指定;

  3. turbine.combine-host-port参数设置为true,可以让同一主机上的服务通过主机名与端口号的组合来进行区分,默认情况下会以host来区分不同的服务,这会使得在本地调试的时候,本机上的不同服务聚合成一个服务来统计。

  • 最后,分别启动 springcloud-eureka、 springcloud-addition-service、 springcloud-consumer-hystrix、 springcloud-turbine以及 springcloud-hystrix-dashboard。

查看 springcloud-turbine服务的日志中看到

  1. c.n.t.monitor.instance.InstanceMonitor   : Url for host: http://192.168.1.112:9604/hystrix.stream default

说明已经开始收集到服务的信息了

访问 springcloud-hystrix-dashboard http://192.168.1.112:9605/hystrix,然后开启对http://192.168.1.112:9700/turbine.stream 的监控,如图:

点击 MonitorStream按钮

最初显示loading...,当我们调用 springcloud-consumer-hystrix服务的hystrix接口后,可以正常显示了

这时候,将看到针对服务 springcloud-consumer-hystrix的聚合监控数据。


原文作者:HelloTech技术派;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-12-05

  • 博文量
    181
  • 访问量
    73730