Spring Cloud中Hystrix仪表盘与Turbine集群监控
Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据一样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,通过它我们可以看到Hystrix的各项指标信息,从而快速发现系统中存在的问题进而解决它,OK,本文我们就来看看Hystrix仪表盘要怎么使用。
本文是Spring Cloud系列的第十五篇文章,了解前十四篇文章内容有助于更好的理解本文:
1.使用Spring Cloud搭建服务注册中心
2.使用Spring Cloud搭建高可用服务注册中心
3.Spring Cloud中服务的发现与消费
4.Eureka中的核心概念
5.什么是客户端负载均衡
6.Spring RestTemplate中几种常见的请求方式
7.RestTemplate的逆袭之路,从发送请求到负载均衡
8.Spring Cloud中负载均衡器概览
9.Spring Cloud中的负载均衡策略
10.Spring Cloud中的断路器Hystrix
11.Spring Cloud自定义Hystrix请求命令
12.Spring Cloud中Hystrix的服务降级与异常处理
13.Spring Cloud中Hystrix的请求缓存
14.Spring Cloud中Hystrix的请求合并
本文我们将从两个方面来看Hystrix仪表盘的使用,一方面是监控单体应用,另一方面则整合Turbine,对集群进行监控。本文的案例在上篇文章的基础上形成,因此整个环境的搭建过程这里不再赘述。
监控单体应用
监控环境搭建
不管是监控单体应用还是Turbine集群监控,我们都需要一个Hystrix Dashboard,当然我们可以在要监控的单体应用上继续添加功能,让它也具备仪表盘的功能,但是这样并不符合我们微服务的思想,所以,Hystrix仪表盘我还是单独创建一个新的工程专门用来做Hystrix Dashboard。OK,在Spring Cloud中创建一个Hystrix Dashboard非常简单,如下:
第一步:创建一个普通的Spring Boot工程
创建一个Spring Boot工程这个比较简单,直接创建一个名为hystrix-dashboard的Spring Boot工程。
第二步:添加相关依赖
Spring Boot工程创建好之后,修改pom.xml文件,添加相关依赖,如下:
<parent><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-parent</artifactId><version>Dalston.SR3</version><relativePath/>
</parent>
<dependencies><!-- 其他默认依赖 --><!-- 我们需要添加的依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix-dashboard</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
</dependencies>
依赖这里,我们主要修改一下parent的内容,然后添加三个依赖,注意不要有遗漏哦。
第三步:入口类上添加注解
添加好依赖之后,在入口类上添加@EnableHystrixDashboard注解,表示开启仪表盘功能,如下:
@SpringBootApplication
@EnableHystrixDashboard
public class HystrixDashboardApplication {public static void main(String[] args) {SpringApplication.run(HystrixDashboardApplication.class, args);}
}
第四步:属性配置
最后,我们可以根据个人偏好来配置一下application.properties文件,我这里配置两个基本的属性,如下:
spring.application.name=hystrix-dashboard
server.port=2001
OK,做完这些之后,我们的监控环境基本上就搭建成功了。
运行效果
环境搭建成功之后,运行这个Spring Boot工程,我们可以看到如下页面:
三个参数的含义我已在图中标注出来了。
OK,现在我们的仪表盘工程已经创建成功了,但是还不能用来监控某一个服务,要监控某一个服务,需要该服务提供一个/hystrix.stream接口,so,我们需要对我们的服务消费者工程稍加改造。
改造要监控的服务
我们来改造一下我们的服务消费者工程,改造方式很简单,两个步骤就搞定,首先在pom.xml文件中添加如下依赖:
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
然后在服务消费者工程的入口类上添加@EnableCircuitBreaker注解,表示开启断路器功能。此时,我们再来启动我们的eureka-server、provider、和consumer工程,在consumer工程的启动日志中,我们可以看到如下信息:
这个信息表明我们的consumer工程目前已经具备了/hystrix.stream接口,我们可以直接访问这个接口了。但是这里有一个细节需要小伙伴们注意:要访问/hystrix.stream接口,得先访问consumer工程中的任意一个其他接口,否则如果直接访问/hystrix.stream接口的话,会打印出一连串的ping: ping: ...。 OK,我先访问consumer中的任意一个其他接口,然后在访问/hystrix.stream接口,访问地址如下:http://localhost:9000/hystrix...,访问结果如下:
我们看到返回结果是一段json数据,单纯的查看json数据,我们很难分析出结果,所以,我们要在Hystrix仪表盘中来查看这一段json,在hystrix仪表盘中输入监控地址,如下:
然后点击Monitor Stream按钮,我们就可以看到监控画面了,如下:
参数详解
OK,仪表盘已经显示出来了,那么仪表盘上的各项数据都是什么意思呢?我们来看下面一张图:
Turbine集群监控
OK,上文我们看了一个监控单体应用的例子,在实际应用中,我们要监控的应用往往是一个集群,这个时候我们就得采取Turbine集群监控了。Turbine有一个重要的功能就是汇聚监控信息,并将汇聚到的监控信息提供给Hystrix Dashboard来集中展示和监控。那我们就来看看Turbine集群监控如何使用。
搭建监控环境
监控环境的搭建也是分为四个步骤:
第一步:创建一个普通的Spring Boot工程
第一步创建一个名叫turbine的普通Spring Boot工程。
第二步:添加依赖
工程创建完成之后,我们需要添加一个依赖,如下:
<parent><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-parent</artifactId><version>Dalston.SR3</version><relativePath/>
</parent>
<dependencies><!-- 其他默认的依赖 --><!-- 我们要添加的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-turbine</artifactId></dependency>
</dependencies>
第三步:添加注解
在入口类上添加@EnableTurbine注解表示开启Turbine,如下:
@SpringBootApplication
@EnableDiscoveryClient
@EnableTurbine
public class TurbineApplication {public static void main(String[] args) {SpringApplication.run(TurbineApplication.class, args);}
}
第四步:修改配置
在application.properties配置文件中加入eureka和turbine的相关配置,如下:
spring.application.name=turbine
server.port=2002
management.port=2003
eureka.client.service-url.defaultZone=http://localhost:1111/eureka/
turbine.app-config=ribbon-consumer
turbine.cluster-name-expression="default"
turbine.combine-host-port=true
关于这个配置文件,我说如下几点:
1.turbine.app-config=ribbon-consumer指定了要监控的应用名字为ribbon-consumer
2.turbine.cluster-name-expression="default",表示集群的名字为default
3.turbine.combine-host-port=true表示同一主机上的服务通过host和port的组合来进行区分,默认情况下是使用host来区分,这样会使本地调试有问题
查看监控图
OK,监控服务创建成功之后,我们再次依次启动eureka-server、provider和consumer,其中consumer启动两个实例,两个实例的端口不一致,再分别启动hystrix-dashboard和turbine,然后在hystrix监控地址栏输入如下地址(监控之前要记得先访问一下服务中的任意一个接口):http://localhost:2002/turbine...,访问结果如下:
小伙伴们可以看到,集群下的主机报告一栏显示已经有所不同了。
OK,Spring Cloud中Hystrix仪表盘与Turbine集群监控我们就介绍到这里,有问题欢迎留言讨论。
更多JavaEE资料请关注公众号:
Spring Cloud中Hystrix仪表盘与Turbine集群监控相关推荐
- Spring Cloud中Hystrix仪表盘与Turbine集群监控 1
Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据一样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,通过它我们可以看到Hystrix的各项指标信息,从而快速发现系统中存在的 ...
- Spring Cloud Turbine集群监控一直Loading问题
这是最近在 学习Spring Cloud 按照书或者网上的例子敲示例遇到的问题,这个问题网上有很多答案,但是我遇到的问题和其他人不同, 如果你也遇到类似问题,希望下面的解决方法能帮助到你 问题描述: ...
- Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失(续)
前言 上篇文章<Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失>我们对ThreadLocal数据丢失进行了详细的分析,并通过代码的方式复现了这个问题. ...
- Spring Cloud中Hystrix、Ribbon及Feign的熔断关系是什么?
导读 今天和大家聊一聊在Spring Cloud微服务框架实践中,比较核心但是又很容易把人搞得稀里糊涂的一个问题,那就是在Spring Cloud中Hystrix.Ribbon以及Feign它们三者之 ...
- Spring Cloud中Hystrix的请求合并
在微服务架构中,我们将一个项目拆分成很多个独立的模块,这些独立的模块通过远程调用来互相配合工作,但是,在高并发情况下,通信次数的增加会导致总的通信时间增加,同时,线程池的资源也是有限的,高并发环境会导 ...
- 服务容错保护断路器Hystrix之四:断路器监控(Hystrix Dashboard)-turbine集群监控
turbine 英[ˈtɜ:baɪn] n. 汽轮机; 涡轮机; 透平机; OK,上文我们看了一个监控单体应用的例子,在实际应用中,我们要监控的应用往往是一个集群,这个时候我们就得采取Turbine集 ...
- Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失
在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离. 在使用线程隔离的时候,有个问题是必须 ...
- 疯狂Spring Cloud连载(5)Eureka集群搭建
2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<疯狂Spring Cloud微服务架构实战> 京东购买地址:https://item.jd.com/1 ...
- 如何在ORACLE CLOUD中创建和访问容器集群丨内附官方文档链接
墨墨导读:本文描述如何在Oracle Cloud中创建并访问容器服务.为了简单,所有的操作都是针对root隔离区. 创建允许容器运行的政策官方文档链接 这一步是必须的,否则可以增加容器容器. 官方文档 ...
最新文章
- 《食堂远程下单系统》需求规格说明书
- halcon从入门到精通pdf_机器视觉软件开发新人入门必看 --机器视觉软件开发学习路径...
- Java数据类型以及变量的定义
- HeroKu PaaS模式
- linux发布微软消息队列,消息队列RabbitMQ入门与5种模式详解
- 动态分区分配存储管理方式的内存分配回收
- 【Task2(2天)】特征工程
- 谈如何整定PID参数
- 正睿OI DAY14 (ks=null)
- Ural 2037. Richness of binary words (打表+构造)
- Python绘制双对数曲线
- cs6制作拼图游戏 dreamweaver_Dreamweaver制作拼图步骤
- deepin系统 crontab 执行自动任务
- C#取得DataTable最大值、最小值
- 玩机搞机----mtk芯片机型 另类制作备份线刷包的方式 读写分区等等
- uni-app实现拼多多倒计时拼团
- Retrofit自定义GsonConverter处理请求错误异常处理
- 手写在线计算机,在线生成手写签名
- Justice, grandson of interest!
- 在win7上的eclipse向hadoop提交作业异常-权限/设置调度器