SpringCloudHystrix之仪表盘以及Turbine集群监控




写在前面

该文参考来自 程序猿DD 的Spring Cloud 微服务实战一书,该文是作为阅读了 spring cloud hystrix 一章的读书笔记。书中版本比较老,我选择了最新稳定版的 spring cloud Greenwich.SR2 版本,该版本较书中版本有些变动。非常感谢作者提供了这么好的学习思路,谢谢!文章也参考了 Spring-cloud-netflix 的官方文档。

学习微服务最好使用容器来搭建,对于正在学习编程的小伙伴推荐买上属于自己的一台服务器,用来练练手,也顺带学习 Docker,这很重要。最近,阿里在搞活动,新用户 1C2G 只要 98 一年,我也比较了很多,还是比较划算的,我自己也入手了,可以点进来看看,对了,最便宜的一款在 【全部必抢爆款】 里面: 阿里云服务器,助力云上云!

Hystrix 收集了关于每个 HystrixCommand 的一组指标。Hystrix 仪表盘以有效方式显示每个断路器的健康状况。


1. 如何构建 Hystrix 仪表盘

创建项目:hystrix-dashboard

引入依赖:

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>

运行 Hystrix 仪表盘,在 启动类上添加 @EnableHystrixDashboard 注解,然后访问 /hystrix ,可以看到如下的界面:

hystrix-dashboard

Delay 代表服务器轮询监控信息的延迟时间,默认为2000毫秒;title 代表后面进入监控界面时的标题名,默认会使用我们填写的 URL。

然后将仪表盘指向 hystrix 客户端单个实例的 /hystrix.stream 端点。

通过页面的文字内容可以知道,Hystrix Dashboard 共支持三种不同的监控方式,如下所示:

  • 默认的集群监控:通过 URL https://turbine-hostname:port/turbine.stream 开启,实现对默认集群的监控。
  • 指定的集群监控:通过 URL https://turbine-hostname:port/turbine.stream?cluster=[clusterName] 开启,实现对 clusterName 集群的监控。
  • 单体应用的监控:通过 URL https://hystrix-app:port/actuator/hystrix.stream 开启,实现对具体某个服务实例的监控。

前两者需要整合 Turbine 才能实现对集群的监控。这部分在后续介绍。

你会发现,上诉指定的 URL 使用的是 https ,但实际上使用 http 也行,对于使用 https 官方文档有如下建议:“ 服务器使用的证书必须得到 JVM 的信任。如果证书不受信任,则必须将证书导入 JVM ,以便 Hystrix 仪表盘能够成功连接到流端点。

使用之前创建的 eureka-service-consumer 服务,也就是一个普通的 hystrix 项目。但需要注意的是 application.yml 文件需要配置 hystrix.stream 端点对外暴露:

management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream

在 hystrix 仪表盘中填入地址, 点击 Monitor Stream 按钮。首次进入,发现面板处于 Loading… 状态,这是只要访问 hystrix 客户端,触发 HystrixCommand 命令即可。这样我们就可以得到下面的界面:
hystrix-dashboard-realtime
helloCommandKey 代表 HystrixCommandcommandKey 。上图中还有实心圆,流量越大,实心圆越大,你可以通过不断刷新对有着 HystrixCommand 命令的接口访问,观察其变化。曲线代表了时间范围内流量的相对变化,通过它能够观察到流量的上升和下降趋势。其余的数值可以通过将鼠标移动上去,阅读其说明即可。


2. Turbine 集群监控

查看单个实例的 Hystrix 数据对于系统的整体健康状况不是很有用。Turbine 在 Hystrix 仪表盘中使用 /turbine.stream ,该端点聚集了所有相关的 /hystrix.stream 端点。实例的定位通过 Eureka


新建项目:turbine, 对外暴露端口:8078

导入依赖:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

application.yml 配置文件:

spring:
  application:
    name: turbine
server:
  port: 8078
eureka:
  client:
    service-url:
      defaultZone: http://localhost:1112/eureka/
turbine:
  aggregator:
    cluster-config: FEIGN-CONSUMER, SERVICE-CONSUMER
  # 使用同一主机上的服务通过主机号与端口号组合进行区分
  combine-host-port: true
  # 服务实例名
  app-config: feign-consumer,service-consumer

这里先说明下,我启动的服务;我在同一台主机上,启动了两个不同端口的FEIGN-CONSUMER 服务,以及一个 SERVICE-CONSUMER 服务,需要注意的是 基于 feign 的服务需要设置 feign.hystrix.enabled=true ,并且引入 Hystrix 依赖,并在启动类上 添加 @EnableCircuitBreaker 注解,对外暴露端点的 management.endpoints.web.exposure.include = hystrix.stream 配置也不能少。修改为这样后, /hystrix.stream 对外暴露成功。


启动:启动类上添加 @EnableTurbine 注解

默认情况下,turbine 通过查找已经注册的eureka 中的主机名和端口来寻找 /hystrix.stream 。如果实例的元数据包含了 management.port ,它将替代 /hystrix.stream 的端口值。


将仪表盘指向指定的集群:

  • http://192.168.3.18:8078/turbine.stream?cluster=SERVICE-CONSUMER

    访问 SERVICE-CONSUMER 服务的接口以后,可以在仪表盘上看见监控数据。

  • http://192.168.3.18:8078/turbine.stream?cluster=FEIGN-CONSUMER

    分别访问两个 FEIGN-CONSUMER 服务接口,可以在仪表盘上看见监控数据,并且发现它的 hosts 为2。
    turbine-dashboard


spring cloud 还封装了基于消息代理的收集实现,有兴趣的话,可以自己研究下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值