Spring Cloud 入門教程五、服務容錯監控:Hystrix Dashboard

1、前言

一、Hystrix Dashboard的做用?

上一篇咱們介紹了Hystrix的基礎使用,咱們能夠經過Hystrix作到依賴隔離和熔斷等操做。可是隻有工具的使用而沒有監控,咱們就沒法在第一時間發現出現問題的依賴,也不能判斷服務總體的健康狀態/運行狀態。因此咱們還要作好相關的監控工做。java

Hystrix提供了監控頁面,本篇主要介紹如何使用Hystrix Dashboard對服務的容錯狀況進行監控。git

二、本篇環境信息

框架 版本
Spring Boot 2.0.0.RELEASE
Spring Cloud Finchley.BUILD-SNAPSHOT
JDK 1.8.x

三、準備工做

  • 準備Eureka Server、服務提供者

參考:https://ken.io/note/spring-cloud-feign-quickstart
源碼:https://github.com/ken-io/springcloud-course/tree/master/chapter-03/github

啓動Eureka Server: http://localhost:8800
啓動Test Service:http://localhost:8602web

  • 服務消費者準備

基於上一篇Feign+Hystrix:https://ken.io/note/spring-cloud-hystrix-quickstart
源碼(feignclient):https://github.com/ken-io/springcloud-course/tree/master/chapter-04/feignclientspring

2、Hystrix Dashboard

基於feignclient項目使用Hystrix Dashboardapp

一、項目中引入Hystrix Dashboard

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

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

二、配置Hystrix Dashboard啓動

修改App.java,增長 @EnableHystrixDashboard 註解框架

package io.ken.springcloud.feignclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableHystrixDashboard
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class App {

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }

}

三、配置HystrixMetricsStream訪問入口

新建package:configuration,而後在此package下建立HystrixConfiguration.java並添加hystrixRegistrationBeanspring-boot

package io.ken.springcloud.feignclient.configuration;

import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class HystrixConfiguration {

    @Bean(name = "hystrixRegistrationBean")
    public ServletRegistrationBean servletRegistrationBean() {
        ServletRegistrationBean registration = new ServletRegistrationBean(
                new HystrixMetricsStreamServlet(), "/hystrix.stream");
        registration.setName("hystrixServlet");
        registration.setLoadOnStartup(1);
        return registration;
    }
}

四、Hystrix Dashboard測試

feignclient項目啓動後,訪問 http://localhost:8605/hystrix工具

將會看到Hystrix Dashboard導航頁測試

image

Hystrix Dashboard導航頁不會展現具體監控信息,而是提供三種選擇:

  1. 默認的集羣監控,經過URL:http://turbine-hostname:port/turbine.stream,查看默認集羣的監控信息。

  2. 指定的集羣監控,經過URL:http://turbine-hostname:port/turbine.stream?cluster=[clusterName],查看指定集羣(clusterName)的監控信息。

  3. 單個實例的監控,經過URL:http://hystrix-app:port/hystrix.stream,查看具體某個服務實例的監控信息。

咱們先經過Hystrix Dashboard看一下單個實例的監控信息
image

輸入指定鏈接:http://localhost:8605/hystrix.stream
Delay(查詢監控信息的延遲時間),Tile能夠自定義,也能夠默認。填寫完畢點擊 Monitor Stream 便可

image

此時Hystrix監控面板會顯示Loanding…,這是由於咱們還沒經過feignclient訪問外部接口,也就還沒生成stream信息。
咱們經過feignclient訪問幾個外部接口,stream信息生成後,監控面板會自動刷新。

image

在訪問了 http://localhost:8605/ti ,http://localhost:8605/plus?numa=1&numb=2
這兩個接口後,監控信息就天然刷新了。不一樣的接口默認會分開來記錄。

監控圖中用圓點來表示服務的健康狀態,健康度從100%-0%分別會用綠色、黃色、橙色、紅色來表示。
另外,這個圓點也會隨着流量的增多而變大。
監控圖中會用曲線(圓點旁邊)來表示服務的流量狀況,經過這個曲線能夠觀察單個接口的流量變化/趨勢

上個圖中是個很是小的綠色圓心,流量曲線也是個折現,是由於 ken.io 這裏訪問兩個接口次數不多。
若是分別狂按F5快速訪問這兩個接口。這個圓心和曲線就會發生變化。

image

這時候這個圓點比着上一張圖已經變大了,服務依舊是健康狀態,因此圓點仍是綠色。
另外流量曲線隨着剛纔的快速刷新訪問也升了上去。

爲了更好的展現服務不一樣健康狀態下面板的變化,咱們快速訪問 http://localhost:8605/ti , http://localhost:8605/plus?numa=1&numb=2,而後關閉testservice,快速的訪問 http://localhost:8605/plus?numa=1&numb=2 ,這首的面板會更豐富。

image

這時候TestService#plusService的圓點就變成了紅色。因爲停用testservice後咱們沒有訪問 http://localhost:8605/ti ,因此這個時間點TestService#plusService的圓點仍是綠色,尺寸也更小。兩個Service的流量曲線變化也跟咱們的操做相吻合。

image

上圖是Hystrix Dashboard監控圖表中各項指標的說明

相關文章
相關標籤/搜索