Spring Cloud Hystrix Dashboard熔断器-Turbine集群监控(六)
序言
上一篇说啦hystrix的使用方法与配置还有工作流程及为何存在,我去,上一篇这么屌,去看看吧,没这么屌的话,我贴的有官方文档,好好仔细看看
hystrix除啦基本的熔断器功能之外,还可以对接口的qps、是否短路、成功调用、失败调用、线程池状态等进行实时监控。
Hystrix Dashboard是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。
内置的监控:Hystrix Dashboard
先上个图看下监控页面长啥样有个概念。


绿色计数: 表示成功的请求数
蓝色计数: 表示断路器打开后,直接被短路的请求数
黄色计数: 表示请求超时数
紫色计数: 表示因为线程池满而被拒绝的请求数
红色计数: 表示因为异常而导致失败的请求数
灰色百分比: 表示的是10秒内的错误率统计
Hosts: 应用个数
Median: Command 的中位数时间
Mean: Command 的平均时间
90th/99th/99.5th: P90、P99、P99.5 时间
Rolling 10 second counters: 说明一下计数都是在一个10秒的滚动窗口内统计的
with 1 second granularity: 这个滚动窗口是以1秒为粒度进行统计的
所有技术和百分比的统计窗口都是10秒(默认值)
Hystrix Dashboard工作过程与搭建

接口通过hystrix封装调用后,可以被/actuator/hystrix.stream发送ping来获取到接口状态,然后通过hystrix dashboad包装展现成为友好的可视化图表。
依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
ServletRegistrationBean
@Bean
public ServletRegistrationBean getServlet(){
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/actuator/hystrix.stream");
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}
起始文件注解
@EnableHystrixDashboard
public class StartMain {
public static void main(String[] args) {
SpringApplication.run(StartMain.class, args);
}
}
ok,启动项目
输入:http://localhost:8083/hystrix

输入http://localhost:8083/actuator/hystrix.stream
会一直无限循环ping

hystrix.stream放到第一个界面中,点击monitor stream,出现下面的页面

Turbine集群监控

配置文件
spring.application.name=shouhou-turbine
server.port=8086
turbine.appConfig=TRADE-ORDER
turbine.aggregator.clusterConfig= default
turbine.clusterNameExpression= new String("default")
turbine.combine-host-port=true
eureka.client.serviceUrl.defaultZone=http://localhost:8081/eureka/
note:
- clusterConfig: default # 指定聚合哪些集群,多个使用","分割,默认为default。可使用http://.../turbine.stream?cluster={clusterConfig之一}访问
- appConfig: service_a,service_b # 配置Eureka中的serviceId列表,表明监控哪些服务
- clusterNameExpression: new String("default")
- clusterNameExpression指定集群名称,默认表达式appName;此时:turbine.aggregator.clusterConfig需要配置想要监控的应用名称
- 当clusterNameExpression: default时,turbine.aggregator.clusterConfig可以不写,因为默认就是default
- 当clusterNameExpression: metadata['cluster']时,假设想要监控的应用配置了eureka.instance.metadata-map.cluster: ABC,则需要配置,同时turbine.aggregator.clusterConfig: ABC
package trade.shouhou.api; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.netflix.turbine.EnableTurbine; @SpringBootApplication
@EnableTurbine
@EnableHystrixDashboard
public class StartMain {
public static void main(String[] args) {
SpringApplication.run(StartMain.class, args);
}
}
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-turbine</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
输入:http://localhost:8031/turbine.stream,将ping你配置服务中的所有实例接口hystrix监控数据。

至此就所有的搞完啦,具体你关心细节的配置参见官方文档啊。
Hystrix Metrics 的优缺点
优点:统计粒度小:时间粒度和监控单元粒度。可以帮助我们发现粗粒度监控时不容易发现的问题。
缺点:数据没有持久化,无法查看历史数据
报警
注:这一段内容和 Hystrix 本身的使用没有直接关系,而是和 Hystrix 相关的微服务治理相关的内容。但建议负责技术、架构,以及负责基础组件和服务研发的同学阅读
在有了监控数据之后,报警功能也是水到渠成,所以这里不谈如何实现基于 Hystrix 监控数据的报警功能。这里我们讨论一下我们是否需要基于 Hystrix 监控数据的报警功能?如果需要,都需要针对哪些指标添加报警?
之所以讨论这个问题,是因为有很多全链路监控解决方案,例如 Spring Cloud Sleuth、Pinpoint 等,都支持对 Hystrix 的监控。所以,监控报警功能并不依赖于 Hystrix 自带的监控数据输出。所以,如果只需要基本的监控报警功能,完全是不需要 Hystrix Metrics 和 Dashboard 功能的。
但 Hystrix 相关的监控数据不同于其它技术,除了超时和错误的监控,还有其它很多细粒度的监控数据。例如,熔断次数、线程池拒绝次数等等。
对于这些细粒度的监控数据,我认为不应该将它们同超时和错误监控等同看待。前者更多的是用于配置调优,后者则主要是一种常规的监控方式。如果我们将 Hystrix Metrics 所提供的所有数据都纳入监控,不仅监控系统,而且,更重要的是,技术人员可能会不堪重sao负rao。过多的监控有时会起到相反的作用,即让技术人员忽视监控。
我认为 Hystrix 相关的报警的一个原则是,报警还应该局限于主要的指标(请求时间、异常)。对于 Hystrix 特有的、细粒度的运行数据,我们需要做到有据可查。以方便开发人员调优.
总结
具体还有怎么让hystrix的监控数据写入Q最终落盘,可对数据进行更全面的分析监控以及结合公司的监控体系让他发挥更大的作用,后面有时间再写。
Spring Cloud Hystrix Dashboard熔断器-Turbine集群监控(六)的更多相关文章
- 断路器Hystrix与Turbine集群监控-Spring Cloud学习第三天(非原创)
文章大纲 一.Hystrix基础介绍二.断路器Hystrix简单使用三.自定义Hystrix请求命令四.Hystrix的服务降级与异常处理五.Hystrix的请求缓存与请求合并六.Hystrix仪表盘 ...
- 服务容错保护断路器Hystrix之四:断路器监控(Hystrix Dashboard)-turbine集群监控
turbine 英[ˈtɜ:baɪn] n. 汽轮机; 涡轮机; 透平机; OK,上文我们看了一个监控单体应用的例子,在实际应用中,我们要监控的应用往往是一个集群,这个时候我们就得采取Turbine集 ...
- spring Cloud服务注册中心Eureka集群
spring Cloud服务注册中心Eureka集群配置: 在application.yml文件加以下配置: server: port: 8761 tomcat: uri-encoding: UTF- ...
- spring cloud: Hystrix(八):turbine集群监控(dashboard)
turbine是聚合服务器发送事件流数据的一个工具,hystrix的监控中,只能监控单个节点,实际生产中都为集群, 因此可以通过turbine来监控集群下hystrix的metrics情况,通过eur ...
- SpringCloud学习笔记(16)----Spring Cloud Netflix之Hystrix Dashboard+Turbine集群监控
前言: 上一节中,我们使用Hystrix Dashboard,只能看到单个应用内的服务信息.在生产环境中,我们经常是集群状态,所以我们需要用到Turbine这一应用. 作用:汇总系统内的多个服务的数据 ...
- 【Spring Cloud笔记】 Eureka通过集群实现高可用
Eureka实现服务注册与发现,在Spring Cloud微服务中起着关键性的作用,必须保障其高可用,常规方案无非通过集群实现.这里在本地机器搭建一个伪集群环境,通过两个节点实现相互注册,并通过主备数 ...
- Spring Cloud Hystrix Dashboard的使用 5.1.3
Hystrix除了可以对不可用的服务进行断路隔离外,还能够对服务进行实时监控.Hystrix可以实时.累加地记录所有关于HystrixCommand的执行信息,包括每秒执行多少.请求成功多少.失败 ...
- spring cloud:通过client访问consul集群(spring cloud hoxton sr8 / spring boot 2.3.4)
一,为什么要搭建consul的client? 1,网上的很多资料,访问consul时用的单机模式,这样是不可以直接在生产环境中使用的 还有一些资料,搭建了consul的集群后,直接访问集群中的某一个i ...
- Spring Cloud Config 配置高可用集群
详细参考:<Sprin Cloud 与 Docker 微服务架构实战>p163-9.10节 spring cloud config 与 eureka 配合使用 我就不写了,请参见本书章节.
随机推荐
- Java8 Stream新特性详解及实战
Java8 Stream新特性详解及实战 背景介绍 在阅读Spring Boot源代码时,发现Java 8的新特性已经被广泛使用,如果再不学习Java8的新特性并灵活应用,你可能真的要out了.为此, ...
- Python爬取前程无忧网站上python的招聘信息
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我姓刘却留不住你的心 PS:如有需要Python学习资料的小伙伴可以 ...
- File 创建一个空目录,创建一个多级目录,删除一个目录
package seday03; import java.io.File; /** * 创建一个空目录,* @author xingsir*/public class MkDirDemo { publ ...
- ZooKeeper安装、配置和使用
Zookeeper的概述: ZooKeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. ZooKeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架, ...
- 易优CMS:type的基础用法
[基础用法] 名称:type 功能:获取指定栏目信息 语法: {eyou:type typeid='栏目ID' empty='暂时没有数据'} <a href="{$field.typ ...
- JS基础语法---函数练习part1---5个练习
练习1:求两个数字的和:获取任意的两个数字的和 function getSum(x, y) { return x + y; } console.log(getSum(10, 20)); 练习2:求1- ...
- arcgis api for javascript 学习(五) 实现地图绘制工具
1.本文实现的功能为鼠标与地图之间的交互,能够在地图上绘制不同形状的图形 2.代码部分主要讲到的为Graphic函数的相关功能 <!DOCTYPE html> <html> & ...
- 获取本设备IP地址
获取本设备(Android.PC)IP地址 public string GetLocalIP() { try { string HostName = Dns.GetHostName(); //得到主机 ...
- centos下载安装libgcc 和 libtiff
1. 查看libtiff 可安装列表: [root@e952aff59318 lib]# yum list | grep "libtiff" libtiff.i686 4.0.9- ...
- 02day-webpack
<!--14 第一种方式 自动打开浏览器 端口号 指定托管的跟目录 启动热刷新 这种是在webpack.json中去配置的 直接在package中 写 将“script”:{ "dev ...