首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SpringCloud系列:单体服务监控和基于Turbine集群监控服务实现

一、概述

前面文章介绍基于Eureka注册服务提供者和消费者,使用Feign、Ribbon、Hystrix实现服务间的调用、负载均衡及服务熔断和降级功能。而服务的调用频次、接口健康状况等还无法直接观察,本文就是基于Hystrix Dashboard实现单体服务及集群服务的监控功能。

二、监控服务实现

1. 创建监控Dashboard

创建普通的SpringBoot项目hystrix-dashboard,该项目是用来收集监控信息并显示的管理服务,在pom.xml文件中增加如下依赖

org.springframework.cloudspring-cloud-starter-hystrixorg.springframework.cloudspring-cloud-starter-hystrix-dashboardorg.springframework.bootspring-boot-starter-actuatororg.springframework.bootspring-boot-starter-testtest

在HystrixDashboardApplication主方法上添加@EnableHystrixDashboard注解,启用HystrixDashboard功能,向服务注册中心注册本服务

@EnableHystrixDashboard@SpringBootApplicationpublic class HystrixDashboardApplication {publicstaticvoidmain(String[] args) { SpringApplication.run(HystrixDashboardApplication.class, args); }}

修改配置文件

spring.application.name=hystrix-dashboardserver.port=9104

启动服务,访问http://localhost:9104/hystrix ,进入Hystrix Dashboard首页

该页面中并没有具体的监控信息。从页面的文字内容中我们可以知道,HystrixDashboard共支持三种不同的监控方式,依次为:

默认的集群监控:Cluster via Turbine (default cluster):http://turbine-hostname:port/turbine.stream

指定的集群监控:Cluster via Turbine (custom cluster):http://turbine-hostname:port/turbine.stream?cluster=[clusterName]

单体应用的监控:Single Hystrix App:http://hystrix-app:port/hystrix.stream

前两者都对集群的监控,需要整合Turbine才能实现。首页的两外两个参数,

Delay:该参数用来控制服务器上轮询监控信息的延迟时间,默认为2000毫秒,可以通过配置该属性来降低客户端的网络和CPU消耗。

:该参数对应了上图头部标题Hystrix Stream之后的内容,默认会使用具体监控实例的URL,我们可以通过配置该信息来展示更合适的标题。

2. 监控单体服务

Hystrix Dashboard监控单实例节点需要通过访问实例的http://hystrix-app:port/hystrix.stream 接口来实现,自然我们需要为服务实例添加这个端点,而添加该功能的步骤也同样简单,只需要在需要监控的服务的pom文件中增加spring-boot-starter-actuator和spring-cloud-starter-hystrix依赖即可

org.springframework.cloudspring-cloud-starter-hystrixorg.springframework.bootspring-boot-starter-actuator

确保在服务实例的主类中已经使用注解,开启了断路器功能,我们这里在eureka-consumer服务上添加该功能,启动服务。在Hystrix Dashboard的首页输http://10.17.5.48:9102/hystrix.stream,已启动对eureka-consumer的监控,点击“Monitor Stream”按钮,可以看到如下页面:

用postman多调用几次,就可以看到数据的变化

在监控信息的左上部分找到两个重要的图形信息:一个实心圆和一条曲线

实心圆:共有两种含义。它通过颜色的变化代表了实例的健康程度,它的健康度从绿色、黄色、橙色、红色递减。该实心圆除了颜色的变化之外,它的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大。所以通过该实心圆的展示,就可以在大量的实例中快速的发现故障实例和高压力实例。

曲线:用来记录2分钟内流量的相对变化,可以通过它来观察到流量的上升和下降趋势。

3. 监控集群服务

在上述架构基础上,引入Turbine来对服务的Hystrix数据进行聚合展示,创建普通的SpringBoot项目turbine-server,在pom.xml文件中增加如下依赖

org.springframework.cloudspring-cloud-starter-turbineorg.springframework.bootspring-boot-starter-actuatororg.springframework.bootspring-boot-starter-testtest

在主方法上添加注解

@EnableTurbine@EnableDiscoveryClient@SpringBootApplicationpublic class TurbineServerApplication {publicstaticvoidmain(String[] args) { SpringApplication.run(TurbineServerApplication.class, args); }}

修改配置文件

spring.application.name=turbine-serverserver.port=9105management.port=9106eureka.instance.preferIpAddress=trueeureka.instance.instance-id=$:$:$eureka.client.serviceUrl.defaultZone=http://10.17.5.45:9911/eureka/,http://10.17.5.46:9912/eureka/#参数指定了需要收集监控信息的服务名turbine.app-config=eureka-consumer#参数指定了集群名称为default,当服务数量非常多的时候,可以启动多个Turbine服务来构建不同的聚合集群turbine.cluster-name-expression="default"#参数设置为true,可以让同一主机上的服务通过主机名与端口号的组合来进行区分,默认情况下会以host来区分不同的服务turbine.combine-host-port=true

启动turbine-server,可以看到,收集了两台集群机器上的信息

访问Hystrix Dashboard, 开启http://localhost:9105/turbine.stream监控,如下图

三、小结

代码地址:https://gitee.com/gengkangkang/springcloud.git

博客地址:https://my.oschina.net/gengkangkang/blog/1589889

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171214G0KXNA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券