SpringCloud系列(35)--使用HystrixDashboard进行服务监控
前言:在上一节中我们使用了Hystrix进行服务熔断处理,至此关于Hystrix的使用到此为止,本节内容关注的是如何使用HystrixDashboard对调用进行监控。
1、HystrixDashboard概述
Hystrix提供的准实时的调用监控(HystrixDashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。SpringCloud也提供了HystrixDashboard的整合,对监控内容转化成可视化界面。
2、创建一个监控程序模块,命名为cloud-consumer-hystrix-dashboard9001
(1)在父工程下新建模块
(2)选择模块的项目类型为Maven并选择模块要使用的JDK版本
(3)填写子模块的名称,然后点完成即可完成创建
效果图:
3、修改cloud-consumer-hystrix-dashboard9001子模块的pom.xml文件,然后reolad一下,下载依赖
例:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springcloud01</artifactId><groupId>com.ken.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-consumer-hystrix-dashboard9001</artifactId><dependencies><!--hystrix dashboard--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId></dependency><!--监控--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--热部署--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
</project>
4、为cloud-consumer-hystrix-dashboard9001子模块添加名为application的yml配置文件(注:yml是官方推荐的配置文件格式,最好使用yml文件而不是properties文件)
效果图:
5、修改application.yml文件配置
server:port: 9001
6、为cloud-consumer-hystrix-dashboard9001子模块新建一个主启动类,类名输入com.ken.springcloud.HystrixDashboardMain9001,然后创建即可
效果图:
7、编写HystrixDashboardMain9001启动类
package com.ken.springcloud;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;@SpringBootApplication
@EnableHystrixDashboard
public class HystrixDashboardMain9001 {public static void main(String[] args) {SpringApplication.run(HystrixDashboardMain9001.class, args);}}
8、启动cloud-consumer-hystrix-dashboard9001项目
效果图:
9、在浏览器地址栏里输入http://localhost:9001/hystrix然后回车进入Hystrix Dashboard监控页面
效果图:
10、监控指定的服务,我这里选择监控cloud-provider-hystrix-payment8001服务
(1)修改cloud-provider-hystrix-payment8001服务的主启动类
package com.ken.springcloud;import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;@SpringBootApplication
//使用Feign,激活并开启
@EnableEurekaClient
//开启断路器功能
@EnableCircuitBreaker
public class PaymentHystrixMain8001 {public static void main(String[] args) {SpringApplication.run(PaymentHystrixMain8001.class, args);}//此配置是为了服务监控而配置,与服务容错本身无关,springcLoud升级后的坑,ServletRegistrationBean因为springboot的默认路径不是"/hystrix.stream" ,只要在自己的项目里配置上下面的servlet就可以了@Beanpublic ServletRegistrationBean getServlet() {HystrixMetricsStreamServlet hystrixMetricsStreamServlet = new HystrixMetricsStreamServlet();ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(hystrixMetricsStreamServlet);servletRegistrationBean.setLoadOnStartup(1);servletRegistrationBean.addUrlMappings("/hystrix.stream");servletRegistrationBean.setName("HystrixMetricsStreamServlet");return servletRegistrationBean;}}
(2)先启动eureka-server7001然后再启动cloud-provider-hystrix-payment8001
效果图:
(3)再次来到Hystrix Dashboard监控页面,在对应的地方填写上相应的信息
[1]填写Turbine访问地址http://localhost:8001/hystrix.stream
[2]Delay填写2000
[3]Title填写Test
例:
(4)点击按钮开始监控cloud-provider-hystrix-payment8001服务
效果图:
注:这里一开始是空白的,开始没有请求的话会一直显示Loading,不用担心,不是程序问题
11、 查看请求正常的情况下断路器的状态
在浏览器的地址栏里连续多次的输入http://localhost:8001/payment/circuit/1,调用接口后返回到HystrixDashboard的页面监控cloud-provider-hystrix-payment8001服务的状态
例:
可以看出在请求正常的情况下断路器的状态是CLOSED
12、根据图形化界面判断服务、请求的状态
(1)根据右边对应状态的7种颜色可以在左边看出对应状态下的请求次数
每个状态都对应着一个颜色,可以通过颜色在界面左边的那对数字那里看出对应请求状态的出现次数
(2)根据左边的实心圆判断实例的健康程度、请求数量
实心圆共有两种含义,其一是通过颜色的变化代表了实例的健康程度,它的健康度从绿色<黄色<橙色<红色递减;其二是实心圆的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大,所以通过观察实心圆的变化,就可以在大量的实例中快速的发现故障实例和高压力实例。
绿色:
红色:
(3)根据左边的曲线判断流量的情况
曲线记录了2分钟内流量的相对变化,可以通过它来观察到流量的上升和下降趋势。