从零开始学spring cloud(十一) -------- hystrix监控
一、官方文档阅读

服务启动后,可以通过/health和hystrix.stream查看效果,实际上,访问上述两个地址,会出现404,这是因为spring boot版本的问题,
我在这里使用的springboot的版本是:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
使用的spring cloud的版本是
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
这里,需要在movie服务的配置文件中,增加:
management:
endpoints:
web:
exposure:
include: ["health","info"]
并且在启动类中,增加:
@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;
}
这样设置后,可以开放对地址地址的访问,具体开放参数,可以查看springboot的文档:
https://docs.spring.io/spring-boot/docs/2.1.4.RELEASE/reference/htmlsingle/#boot-features-security-actuator

当中有很具体的说明。
二、实践
启动user,eureka,movie服务,
访问movie服务:http://localhost:8010/actuator/hystrix.stream
在未发生实际请求时,会一直ping:ping:
当我们访问服务,请求user服务后,

就会一直刷日志,这个日志很难截图,因此,hystrix提供了一个图形化界面,供我们进行查看,分析。
首先,在pom文件中,增加相应的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
在启动类上 增加注解:@EnableHystrixDashboard ,启动项目,并访问如下地址:http://localhost:8010/hystrix

在上面的文本框中,填入hystrix.stream,然后设置一个标题,如下:

点击monittor stream ,

然后访问服务,查看数据变化,
实际上,一个真实的项目,有很多个微服务,这种监控单点的实例,其实是没有作用的。

查看单个实例的Hystrix数据在系统整体运行状况方面不是很有用。 Turbine是一个应用程序,它将所有相关的/hystrix.stream端点聚合到一个组合的/turbine.stream中,以便在Hystrix仪表板中使用。 个别实例位于尤里卡。 运行Turbine需要使用@EnableTurbine注释来注释主类(例如,使用spring-cloud-starter-netflix-turbine来设置类路径)。 Turbine 1 wiki中所有记录的配置属性均适用。 唯一的区别是turbine.instanceUrlSuffix不需要前置端口,因为除非turbine.instanceInsertPort = false,否则会自动处理。
默认情况下,Turbine通过在Eureka中查找其hostName和端口条目,然后将/hystrix.stream附加到其上来查找已注册实例上的/hystrix.stream端点。 如果实例的元数据包含management.port,则使用它来代替/hystrix.stream端点的端口值。 默认情况下,名为management.port的元数据条目等于management.port配置属性。 可以通过以下配置覆盖它:
eureka:
instance:
metadata-map:
management.port: ${management.port:8081}
通过这个配置呢,可以修改hystrix.stream的端口,
spring cloud 提供了turbine,下面我们先搭建一个turbine server
turbine是从eureka上获取节点数据的,因此,turbine也需要注册到eureka上,首先,引入相应的依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
在启动类上,增加如下的注解:
@EnableTurbine

如果名称是默认值,则可以省略cluster参数。 cluster参数必须与turbine.aggregator.clusterConfig中的条目匹配。 从尤里卡返回的值是大写的。 因此,如果有一个名为Customers的应用程序在Eureka注册,则以下示例有效:
我们在配置文件中,增加类似的配置:
spring:
application:
name: microservice-hystrix-turbine
server:
port: 8031 eureka:
client:
serviceUrl:
defaultZone: http://user:password123@192.168.1.114:8761/eureka
instance:
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}} turbine:
aggregator:
clusterConfig: MICROSERVICE-CONSUMER-MOVIE-FEGIN-WITH-HYSTRIX
appConfig: microservice-consumer-movie-fegin-with-hystrix
启动eureka,user,dasdboard,movie服务
访问:http://localhost:8031/turbine.stream?cluster=MICROSERVICE-CONSUMER-MOVIE-FEGIN-WITH-HYSTRIX

就能看到打印的结果,
下载把地址,放入仪表盘,dasdboard

下面访问movie服务,查看访问结果

这个监控,有一定的延时,我们再次启动一个movie服务,相同的服务名称,
然后再次查看仪表盘,可以查看到两个节点的监控都有了,但是后起的那个监控,会延迟一段时间,才会被仪表盘监控到
下面看一下turbine是如何监控多个不同的服务的
修改turbine的配置文件:
turbine:
aggregator:
clusterConfig: default
appConfig: microservice-consumer-movie-fegin-with-hystrix,microservice-consumer-movie
clusterNameExpression: "'default'"
这样,使用了一个“默认”的集群,现在直接访问turbine的http://localhost:8031/turbine.stream
就能看到以下数据:

下面将turbine的地址填入dasdboard,
通过浏览器,分别请求另外两个数据,查看仪表盘结果

就可以发现,仪表盘监控了两个项目。
默认情况下,trubine在注册的实例上查找/hystrix.stream端点,方法是在Eureka中查找其homePageUrl 条目。然后将/hystrix.stream附加
从零开始学spring cloud(十一) -------- hystrix监控的更多相关文章
- 从零开始学spring cloud(十) -------- hystrix简单代码示例
一.官网文档阅读 较低级别的服务中的服务故障可能导致级联故障一直到用户. 当对特定服务的调用超过circuitBreaker.requestVolumeThreshold(默认值:20个请求)且失败百 ...
- 从零开始学spring cloud(七) -------- Spring Cloud OpenFegin
一.OpenFegin 介绍 Feign是一个声明性的Web服务客户端. 它使编写Web服务客户端变得更容易. 要使用Feign,请创建一个界面并对其进行注释. 它具有可插入的注释支持,包括Feign ...
- 从零开始学spring cloud(六) -------- Ribbon
一.Ribbon介绍 Ribbon就是客户端侧负责均衡实现的一种方式,那么Ribbon是什么呢? Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端侧负载均衡算法.Ribb ...
- 从零开始学spring cloud(五) -------- 将服务注册到Eureka上
一.开发前准备工作: 官方文档地址:https://cloud.spring.io/spring-cloud-static/spring-cloud-netflix/2.1.0.RELEASE/mul ...
- 从零开始学spring cloud(四) -------- 基础项目搭建
1.创建一个spring cloud项目 1.1.使用工具创建--idea 点击creat new project,选择spring initializr 点击next,选择下一步 填入自己的Grou ...
- 从零开始学spring cloud(九) -------- 超时机制,断路器模式介绍
目前存在的问题: 现在我们假设一下,服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到服务返回.在高负载场景下,如果不做任何处理,这种问题很可能造成所有处理用户请求的线程都被耗竭,而 ...
- 从零开始学spring cloud(八) -------- Eureka 高可用机制
一.Eureka高可用机制介绍 Eureka服务器没有后端存储,但注册表中的服务实例都必须发送心跳以使其注册保持最新(因此可以在内存中完成). 客户端还有一个Eureka注册的内存缓存(因此,他们不必 ...
- 从零开始学spring cloud(三) -------- Eureka简介
1.服务发现组件:Eureka Eureka的开源文档介绍地址:https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance What is Eu ...
- 从零开始学spring cloud(一) -------- spring cloud 简介
1.微服务简介 1.1.单体架构 一个归档包(例如war格式)包含了应用所有功能的应用程序,我们通常称之为单体应用.架构单体应用的方法论,我们称之为单体应用架构. 缺点:1. 复杂性高以笔者经手的一个 ...
随机推荐
- pyexecjs模块
1,找到断点事件 2,浏览call stack 下面的代码,找到需要的值 3,F11进入方法内部 对于网站自己定义的方法,可以用py复制下来进行执行js N = function (a, b, c) ...
- Intent之跳转总结
) { localIntent.setAction(; ActivityManager am = (ActivityManager) context.) {) { ) { // android 5.0 ...
- vs2017使用问题
最近安装了新版本的Visual studio 2017,但是在使用的过程中遇到了这样一个问题.刚启动电脑后,打开vs2017是可以打开的,但是当关掉之后再打开就打不开了,但是任务管理器看可以看到有一 ...
- HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
如何处理长的单词和链接(强制换行,连接符,省略号等) 我们在前端开发中经常会遇到一些很长的文本串从它的容器中溢出,例如: 通过这样一段css可以有效解决这种问题: .dont-break-out { ...
- 【Python爬虫】01:网络爬虫--规则
Python网络爬虫与信息提取 目标:掌握定向网络数据爬取和网页解析的基本能力. the website is the API 课程分为以下部分: 1.requsets库(自动爬取HTML页面.自动网 ...
- 最大化等比例测试演化Demo-传统方法
demo-1: <!doctype html> <html> <head> <meta charset="utf-8"> <t ...
- C#绘图:带背景,拖鼠标画矩形和直线
基于 Visual Studio 2012 .net framework 4.5 效果截图: 代码: https://download.csdn.net/download/talkwah/104828 ...
- awk --- 常用技巧
一.每隔几行取出一个数,输出到另外一个文件 awk '{ if (NR % 9 ==1) {print NR, " => ", $0 } }' kp.txt > xy_ ...
- 接口测试总结分享(http与rpc)
接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等. 一.了 ...
- myeclipse在过时的环境下部署项目出现的问题
开发环境 操作系统:xp sp3 2002 (ps:客户公司环境只有这个老古董) 开发工具:myeclipse2014 32位 jdk: 1.7_49 32位 DB:DB2 9.1 32位 ...