SpringCloud 基础教程(九)-Hystrix服务监控(下)

  个人博客:兰陵笑笑生,欢迎浏览博客!java

 上一章 SpringCloud基础教程(八)-Hystrix熔断器(上)当中,咱们介绍了Hystrix在分布式环境下,如何经过熔断、降级的方式解决了服务延迟或者故障出现的问题,本章咱们将深刻了解Hystrix的服务监控。程序员

前言

 当服务端由于网络延迟或故障出险问题时,咱们能够经过Hystrix实现服务熔断,那么如何作到迅速的发现问题而且迅速的解决问题呢?熔断的监控工具备2款工具:Hystrix-dashboard和Turbine,Hystrix-dashboard是针对Hystrix进行实时的监控工具,经过Hystrix-dashboard咱们能够直观的看到单个应用的服务信息。可是,在分布式的模式下,咱们须要一个可以汇总全部的服务数据并直观的显示出来,这个工具就是Turbine。web

1、健康检查

 咱们在 SpringCloud 基础教程(三)-Eureka 进阶 中提到了 Eureka是默认使用心跳机制来监测服务的健康与否的,咱们经过在服务端引入actuator依赖,并修改yml配置,开启健康检查,可以查到服务是否正常,这里在须要被监测的服务组件中,开启监控也须要引入actuator:spring

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

 application.yml添加配置,默认只有"health","info",这里咱们添加"hystrix.stream"express

management:
  endpoints:
    web:
      exposure:
         include: ["health","info","hystrix.stream"]

 启动被监测的项目后,这里我启动了server-consumer服务消费者,actuator为hystrix提供了管理接口,咱们经过http://localhost:5168/actuator/hystrix.stream当前版本是2.x版本,若是是1.x版本,请求的接口就是/hystrix.stream ),就能够看到页面在动态的、实时的刷新,监控一些参数:网络

file

二 、监控面板

 在被检测的项目中引入actuator就能够经过接口的方式收集Hystrix Command标注的资源接口参数信息,咱们还能够经过直观的方式,使用Hystrix-dashboard仪表盘的方式展现:app

 首先,新建仪表盘应用Monitor,建立Maven项目,引入hystrix-dashboard依赖:负载均衡

<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
  </dependency>

 在主类上添加@EnableHystrixDashboard注解,表示开启仪表盘:分布式

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@SpringBootApplication
@EnableHystrixDashboard
public class MonitorApplication {
    public static void main(String[] args) {
        SpringApplication.run(MonitorApplication.class, args);
    }

}

 配置文件中指定端口为8412,启动项目后,能够经过http://localhost:8412/hystrix访问仪表盘的页面:spring-boot

file

 控制主页面,咱们能够输入指定服务的接口,刷新时间,默认是2秒就能够显示指定服务的监控数据了,好比咱们能够输入server-consumer服务消费者的url http://localhost:5168/actuator/hystrix.stream ,就能够实时的显示如下的信息:

file

具体的信息,包括了成功数量、熔断数量,错误数量,错误的百分比等等信息:

file

三 、聚合监控Turbine

 在实际的企业开发中,服务的实例不知一个,这个时候就须要将全部服务的监控信息聚合到一个面板上,咱们可使用Turbine。

 在上文Monitor仪表盘项目中,咱们继续引入turbine依赖:

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
  </dependency>

 并在主类上添加@EnableTurbine注解:

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
@EnableHystrixDashboard
@EnableTurbine
public class MonitorApplication {
    public static void main(String[] args) {
        SpringApplication.run(MonitorApplication.class, args);
    }
}

 配置仪表盘的应用添加配置application.yml,并添加Eureka配置,这样能够从Eureka中心经过服务名称获取服务实例信息:

eureka:
  instance:
    hostname: eureka7001.com
    instance-id: monitor
    prefer-ip-address: true #eureka服务端的实例名称
  client:
    service-url:
       # 与注册中心交互的url
       defaultZone: http://eureka7001.com:7001/eureka/
       enabled: true

turbine:
  aggregator:
     #集群的名称,能够多个
    cluster-config: MAIN
  #监控服务的名称,能够有多个
  app-config: server-consumer
  cluster-name-expression: metadata['cluster']

 一样,咱们在被监控的服务server-consumer的配置中,须要配置和Monitor项目的配置同样:、

eureka:
  instance:
    metadata-map:
      cluster: MAIN

 咱们启动1个Eureka,2个服务server-consumer,1个Monitor仪表盘项目,接下来就直接在Hystrix的仪表盘页面输入:

http://localhost:8412/turbine.stream?cluster=MAIN

 咱们就能够看到数据都被汇集到一块儿了,Hosts为2表示有2个实例:

file

这样既能够看到聚合以后的监控图形化信息了。

4、总结

 本章在上一章的基础之上,详细的介绍了Hystrix熔断的监控,以示例的方式展现了单个服务的监控和多个服务的聚合监控。在实际的企业应用中,咱们可以经过这样的方式及时的掌握每一个服务的健康情况。这是很是有必要和实用的。

 以上就是本期的分享,你能够关注本博客的#Spring Cloud基础教程!#。 还能够关注公众号: 程序员笑笑生,关注更多精彩内容!

以就是本期的分享,你还能够关注公众号:** 程序员笑笑生**,关注更多精彩内容!

file

file

SpringCloud基础教程(一)-微服务与SpringCloud

SpringCloud基础教程(二)-服务发现 Eureka

SpringCloud基础教程(三)-Eureka进阶

SpringCloud 基础教程(四)-配置中心入门

SpringCloud基础教程(五)-配置中心热生效和高可用

SpringCloud 基础教程(六)-负载均衡Ribbon

SpringCloud 基础教程(七)-Feign声明式服务调用

SpringCloud 基础教程(八)-Hystrix熔断器(上)

更多精彩内容,请期待...

本文由博客一文多发平台 OpenWrite 发布!

个人博客地址兰陵笑笑生,欢迎浏览!

相关文章
相关标签/搜索