Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】

在上一篇《服务容错保护(hystrix断路器)》的介绍中,咱们提到断路器是根据一段时间窗内的请求状况来判断并操做断路器的打开和关闭状态的。而这些请求状况的指标信息都是HystrixCommand和HystrixObservableCommand实例在执行过程当中记录的重要度量信息,它们除了Hystrix断路器实现中使用以外,对于系统运维也有很是大的帮助。这些指标信息会以“滚动时间窗”与“桶”结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用,Hystrix Dashboard就是这些指标内容的消费者之一。java

下面咱们基于以前的示例来结合Hystrix Dashboard实现Hystrix指标数据的可视化面板,这里咱们将用到下以前实现的几个应用,包括:git

  • eureka-server:服务注册中心github

  • eureka-client:服务提供者spring

  • eureka-consumer-ribbon-hystrix:使用ribbon和hystrix实现的服务消费者服务器

因为eureka-consumer-ribbon-hystrix项目中的/consumer接口实现使用了@HystrixCommand修饰,因此这个接口的调用状况会被Hystrix记录下来,以用来给断路器和Hystrix Dashboard使用。断路器咱们在上一篇中已经介绍过了,下面咱们来具体说说Hystrix Dashboard的构建。网络

动手试一试

在Spring Cloud中构建一个Hystrix Dashboard很是简单,只须要下面四步:架构

  • 建立一个标准的Spring Boot工程,命名为:hystrix-dashboard。app

  • 编辑pom.xml,具体依赖内容以下:运维

<parent>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-parent</artifactId>
    <version>Dalston.SR1</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>
  • 为应用主类加上@EnableHystrixDashboard,启用Hystrix Dashboard功能。分布式

@EnableHystrixDashboard
@SpringCloudApplication
public class HystrixDashboardApplication {
    public static void main(String[] args) {
        SpringApplication.run(HystrixDashboardApplication.class, args);
    }
}
  • 根据实际状况修改application.properties配置文件,好比:选择一个未被占用的端口等,此步非必须。

spring.application.name=hystrix-dashboard
server.port=1301

到这里咱们已经完成了基本配置,接下来咱们能够启动该应用,并访问:http://localhost:1301/hystrix,咱们能够看到以下页面:

这是Hystrix Dashboard的监控首页,该页面中并无具体的监控信息。从页面的文字内容中咱们能够知道,Hystrix Dashboard共支持三种不一样的监控方式,依次为:

  • 默认的集群监控:经过URLhttp://turbine-hostname:port/turbine.stream开启,实现对默认集群的监控。

  • 指定的集群监控:经过URLhttp://turbine-hostname:port/turbine.stream?cluster=[clusterName]开启,实现对clusterName集群的监控。

  • 单体应用的监控:经过URLhttp://hystrix-app:port/hystrix.stream开启,实现对具体某个服务实例的监控。

前二者都对集群的监控,须要整合Turbine才能实现,这部份内容咱们将在下一篇中作详细介绍。在本节中,咱们主要实现对单个服务实例的监控,因此这里咱们先来实现单个服务实例的监控。

既然Hystrix Dashboard监控单实例节点须要经过访问实例的/hystrix.stream接口来实现,天然咱们须要为服务实例添加这个端点,而添加该功能的步骤也一样简单,只须要下面两步:

  • 在服务实例pom.xml中的dependencies节点中新增spring-boot-starter-actuator监控模块以开启监控相关的端点,并确保已经引入断路器的依赖spring-cloud-starter-hystrix

<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@EnableHystrix注解,开启了断路器功能。

到这里已经完成了全部的配置,咱们能够在Hystrix Dashboard的首页输入http://localhost:2101/hystrix.stream,已启动对“eureka-consumer-ribbon-hystrix”的监控,点击“Monitor Stream”按钮,此时咱们能够看到以下页面:

在对该页面介绍前,咱们先看看在首页中咱们尚未介绍的两外两个参数:

  • Delay:该参数用来控制服务器上轮询监控信息的延迟时间,默认为2000毫秒,咱们能够经过配置该属性来下降客户端的网络和CPU消耗。

  • Title:该参数对应了上图头部标题Hystrix Stream以后的内容,默认会使用具体监控实例的URL,咱们能够经过配置该信息来展现更合适的标题。

回到监控页面,咱们来详细说说其中各元素的具体含义:

  • 咱们能够在监控信息的左上部分找到两个重要的图形信息:一个实心圆和一条曲线。

    • 实心圆:共有两种含义。它经过颜色的变化表明了实例的健康程度,以下图所示,它的健康度从绿色、黄色、橙色、红色递减。该实心圆除了颜色的变化以外,它的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大。因此经过该实心圆的展现,咱们就能够在大量的实例中快速的发现故障实例和高压力实例。

    • 曲线:用来记录2分钟内流量的相对变化,咱们能够经过它来观察到流量的上升和降低趋势。

  • 其余一些数量指标以下图所示:

更多Spring Cloud内容请持续关注个人博客更新或在《Spring Cloud微服务实战》中获取。

代码示例

样例工程将沿用以前在码云和GitHub上建立的SpringCloud-Learning项目,从新作了一下整理。经过不一样目录来区分Brixton和Dalston的示例。

相关阅读

相关文章
相关标签/搜索