概述
目录
- 1.什么是Hystrix Dashboard
- 2.Hystrix Dashboard入门案例
- 3.小结
- 4.监控图怎么看
1.什么是Hystrix Dashboard
-
Hystrix提供了对于微服务调用状态的监控信息,但是需要结合spring-boot-actuator模块一起使用
-
Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command实时的请求响应时间, 请求成功率等数据,可以帮助我们快速发现系统中存在的问题
-
注意:从Hystrix Dashboard的定义我们可以看出,它是专门用来监控使用了Hystrix的注解@Hystrix Command的方法的实时情况的,那么我们使用Hystrix Dashboard进行服务者某些服务的实时监控的前提为我们监控的这个服务者向外提供的API使用了Hystrix的服务熔断机制,即方法上面使用了注解@Hystrix Command,并且定义了一个备份的替代方法,那么这个方法被消费者微服务请求的情况我们才能够通过Hystrix Dashboard看到其实时的情况
2.Hystrix Dashboard入门案例
- 既然是监控服务提供者提供的服务,我们可以将这个功能单独的分离为一个微服务,哪一个使用了熔断服务的服务提供者模块需要进行Hystrix的监控了,我们就直接在这个服务提供者的入口程序中添加一个注册HystrixMetricsStreamServlet这个servlet的@Bean方法,这样这个服务提供者中使用了注解@Hystrix Command的方法的使用情况就能够被Hystrix Dashboard监控统计了
- 创建一个新的子model:springcould-provider-hystrix-dashboard-10000
- 导入使用Hystrix Dashboard需要的依赖
<dependencies> <!--Hystrix:Dashboard依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> <version>1.4.7.RELEASE</version> </dependency> <!--eureka完善对应服务的监控信息依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
- 注意:我们只导入了Hystrix Dashboard使用必要的两个依赖,其他的依赖都可以不要
- 首先在配置文件application中配置服务端口,这里我们设置为10000,然后再添加一个Hystrix Dashboard的配置
server: port: 10000 hystrix: dashboard: proxy-stream-allow-list: "*"
- 需要注意的是在Spring Cloud Finchley 版本以前访问路径是/hystrix.stream,如果是Finchley的话就需要加入上面的配置。因为spring Boot 2.0.x以后的actuator只暴露了info和health2个端点,这里我们把所有端点开放,include: '*'代表开放所有端点
- 编写入口程序,注意使用注解@EnableHystrixDashboard开启监控页面
@SpringBootApplication @EnableHystrixDashboard //开启监控页面 public class DeptProviderDashboard_10000 { public static void main(String[] args) { SpringApplication.run(DeptProviderDashboard_10000.class,args); } }
- 然后我们就可以去浏览器中输入
http://localhost:10000/hystrix
(注意:10000是这个Hystrix Dashboard微服务运行的端口号,可以根据自己的设置修改),就可以获取到一个页面,这就是Dashboard的监控首页
- 从首页中我们可以看出并没有具体的监控信息,从页面上的文件内容我们可以知道,Hystrix Dashboard共支持三种不同的监控方式:
- 默认的集群监控:
http://turbine-hostname:port/turbine.stream
- 指定的集群监控:
http://turbine-hostname:port/turbine.stream?cluster=[clusterName]
- 单体应用的监控:
http://hystrix-app:port/actuator/hystrix.stream
- 默认的集群监控:
- 页面上面的几个参数局域
- 最上面的输入框: 输入上面所说的三种监控方式的地址,用于访问具体的监控信息页面
- Delay: 该参数用来控制服务器上轮询监控信息的延迟时间,默认2000毫秒
- Title: 该参数对应头部标题Hystrix Stream之后的内容,默认会使用具体监控实例的Url
- 我们先来看下单个服务实例的监控,从http://hystrix-app:port/actuator/hystrix.stream连接中可以看出,Hystrix Dashboard监控单节点实例需要访问实例的actuator/hystrix.stream接口,我们自然就需要为服务实例添加这个端点
- 实现方法就是在直接在服务提供者的入口程序中添加一个注册HystrixMetricsStreamServlet这个servlet的@Bean方法,注意使用前提:这个服务提供者已经使用了Hystrix的服务熔断注解@HystrixCommand,否则HystrixDashboard不能使用/不能获取到监控的数据;
- 这里我们就使用前面学习服务熔断的时候创建的服务者model:springcould-provider-dept-hystrix-8001,所以我们需要在这个服务提供者的主启动类中添加一个注册servlet的@Bean方法
package com.thhh.springcould; import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.context.annotation.Bean; @SpringBootApplication @EnableEurekaClient //标识这是一个eureka注册中心提供服务的客户端,加上配置文件中配置的注册中心的url,服务就会被自动注册到eureka注册中心中去 @EnableCircuitBreaker//开启熔断器,即添加对熔断的支持 public class HystrixDeptProvider_8001 { public static void main(String[] args) { SpringApplication.run(HystrixDeptProvider_8001.class,args); } @Bean public ServletRegistrationBean hystrixServletRegistrationBean(){ //在spring boot中向servlet容器中注册新的servlet并设置这个servlet的请求url ServletRegistrationBean bean = new ServletRegistrationBean(new HystrixMetricsStreamServlet()); //将新的servlet注入servlet容器中 bean.addUrlMappings("/actuator/hystrix.stream"); //设置该servlet的请求路径 return bean; } }
- 注意:该servlet的请求URL映射需要为HystrixDashboard页面上单个服务实例的监控需要访问的实例的actuator/hystrix.stream接口保持一致,否则我们就不能查看当前这个服务提供者的监控信息,因为我们我们在url输入框中输入的单体应用的监控的URL对应的节点并不存在
- 测试,按照注册中心、服务提供者、服务消费者、HystrixDashboard的顺序启动各个子model,然后首先访问注册中心、服务消费者,保证此时服务可以正常的使用,在此前提下我们再谈监控服务提供者的事情
- 通过上面的例子我们实现了通过HystrixDashboard实现对于服务提供者中使用了Hystrix熔断服务的 方法/API 被消费者进行消费的实时监控
- 特别注意:HystrixDashboard监控的是使用了Hystrix熔断服务服务提供者的 方法/API被消费者实时消费的情况,不是随便一个服务提供者中controller中的方法都可以进行监控
- 参考链接
3.小结
- HystrixDashboard监控是针对性的监控,不是说监控谁就监控谁,它是专门用于监控使用了Hystrix熔断服务服务提供者的 方法/API被消费者实时消费的情况
- HystrixDashboard用于监控的是服务提供者,不是服务消费者
- HystrixDashboard因为需要在页面上实时查看监控数据,所以它本身需要独立成一个微服务,占用一个端口向外提供查看监控数据的服务
- 在需要使用HystrixDashboard的服务提供者中,我们不需要导入我们实现的HystrixDashboard微服务,我们只需要在这个model的入口程序中加入一个注册HystrixMetricsStreamServlet这个servlet的@Bean方法并配置其url-pattern即可,注意url-pattern需要为Hystrix Dashboard支持的三种不同的监控方式的url
只能是上图圈出来的3种中的一种,所以url-pattern的值相对固定
4.监控图怎么看
- 一个圈
- 实心圆:它代表了两种含义,它通过颜色的变化代表了实例的健康程度,通过大小变化代表了实例的流量变化
- 它的健康程度从绿色<黄色<橙色<红色 递减
- 该实心圆除了颜色的变化之外,它的大小也会根据实例的请求流量发生变化,流量越大,该实心圆就越大,所以通过该实心圆的展示,就可以在大量的实例中快速发现故障实例和高压力实例
- 一线
- 曲线:用来记录2分钟内流量的相对变化,可以通过它来观察到流量的上升和下降趋势
- 曲线:用来记录2分钟内流量的相对变化,可以通过它来观察到流量的上升和下降趋势
- 七色
- 绿色:成功数
- 蓝色:熔断数
- 浅绿色:错误请求数
- 黄色:超时数
- 紫色:线程池拒绝数
- 红色:失败/异常数
- Hosts:服务请求频率
- Circuit Closed:断路状态
- 整图说明
- 看懂了一张图才能看懂复杂的图
最后
以上就是彪壮云朵为你收集整理的SpringCloud(15) —— Hystrix:Dashboard流监控的全部内容,希望文章能够帮你解决SpringCloud(15) —— Hystrix:Dashboard流监控所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复