Spring Cloud中Hystrix仪表盘与Turbine集群监控

Hystrix仪表盘,就像汽车的仪表盘实时显示汽车的各项数据同样,Hystrix仪表盘主要用来监控Hystrix的实时运行状态,经过它咱们能够看到Hystrix的各项指标信息,从而快速发现系统中存在的问题进而解决它,OK,本文咱们就来看看Hystrix仪表盘要怎么使用。spring

本文是Spring Cloud系列的第十五篇文章,了解前十四篇文章内容有助于更好的理解本文:express

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的请求合并json

本文咱们将从两个方面来看Hystrix仪表盘的使用,一方面是监控单体应用,另外一方面则整合Turbine,对集群进行监控。本文的案例在上篇文章的基础上造成,所以整个环境的搭建过程这里再也不赘述。缓存

监控单体应用app

监控环境搭建负载均衡

无论是监控单体应用仍是Turbine集群监控,咱们都须要一个Hystrix Dashboard,固然咱们能够在要监控的单体应用上继续添加功能,让它也具有仪表盘的功能,可是这样并不符合咱们微服务的思想,因此,Hystrix仪表盘我仍是单首创建一个新的工程专门用来作Hystrix Dashboard。OK,在Spring Cloud中建立一个Hystrix Dashboard很是简单,以下:ide

第一步:建立一个普通的Spring Boot工程spring-boot

建立一个Spring Boot工程这个比较简单,直接建立一个名为hystrix-dashboard的Spring Boot工程。微服务

第二步:添加相关依赖ui

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
1
2
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>
1
2
3
4
5
6
7
8
而后在服务消费者工程的入口类上添加@EnableCircuitBreaker注解,表示开启断路器功能。此时,咱们再来启动咱们的eureka-server、provider、和consumer工程,在consumer工程的启动日志中,咱们能够看到以下信息:

这里写图片描述

这个信息代表咱们的consumer工程目前已经具有了/hystrix.stream接口,咱们能够直接访问这个接口了。可是这里有一个细节须要小伙伴们注意:要访问/hystrix.stream接口,得先访问consumer工程中的任意一个其余接口,不然若是直接访问/hystrix.stream接口的话,会打印出一连串的ping: ping: …。 OK,我先访问consumer中的任意一个其余接口,而后在访问/hystrix.stream接口,访问地址以下:http://localhost:9000/ www.tianhengyl1.com hystrix.stream,访问结果以下:

这里写图片描述

咱们看到返回结果是一段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.www.lgzxyl.com springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-turbine</artifactId>
    </dependency www.hnktv.cn>
</dependencies>
第三步:添加注解

在入口类上添加@EnableTurbine注解表示开启Turbine,以下:

@SpringBootApplication
@EnableDiscoveryClient
@EnableTurbine
public class TurbineApplication {

    public static void main(String[] args) {
        SpringApplication.run(TurbineApplication.class, args);
    }
}
1
2
3
4
5
6
7
8
9
第四步:修改配置

在application.properties配置文件中加入eureka和turbine的相关配置,以下:

spring.application.name=turbine
server.port=2002
management.port=2003
eureka.client.service-url.defaultZone=http:/www.zzktv.cn/ localhost:1111/eureka/
turbine.app-config=ribbon-consumer
turbine.cluster-name-expression="default"
turbine.combine-host-port=true
1
2
3
4
5
6
7
关于这个配置文件,我说以下几点:

1.turbine.app-config=ribbon-consumer指定了要监控的应用名字为ribbon-consumer 
2.turbine.cluster-name-expression=”default”,表示集群的名字为default 
3.turbine.www.yunduanpingtai.cn  combine-host-port=true表示同一主机上的服务经过host和port的组合来进行区分,默认状况下是使用host来区分,这样会使本地调试有问题
查看监控图

OK,监控服务建立成功以后,咱们再次依次启动eureka-server、provider和consumer,其中consumer启动两个实例,两个实例的端口不一致,再分别启动hystrix-dashboard和turbine,而后在hystrix监控地址栏输入以下地址(监控以前要记得先访问一下服务中的任意一个接口):http://localhost:2002/turbine.stream,访问结果以下:

这里写图片描述

小伙伴们能够看到,集群下的主机报告一栏显示已经有所不一样了。

相关文章
相关标签/搜索