1. 程式人生 > 其它 >整合spring-cloud-Hystrix監控面板

整合spring-cloud-Hystrix監控面板

前言

昨天我們分享了Hystrix熔斷的相關知識點,但由於時間的關係,還有一些基礎內容沒有來得及分享,今天我們花一點時間補充下。

今天我們補充的內容主要是關於Hystrix監控面板的,這一塊雖然不算核心內容,但是也比較重要。好了,下面我們直接開始吧。

Hystrix控制面板

首先你需要建立一個spring-boot專案,或者用我們之前的專案也可以,然後新增hystrix-dashboard相關依賴。

依賴

依賴檔案也比較少,就一個pom依賴

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

但是你需要在斷路器服務中新增actuator依賴,預設情況下是沒有這個依賴的,這個依賴主要是為了監控spring boot服務的監控狀況。

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

如果這個包新增成功後,訪問服務的/actuator,應該是有資料正常返回的:

專案配置

新增完依賴之後,我們還需要進行一些簡單配置,才能啟用HystrixDashboard

,不過啟用的方式很簡單,你只需要在專案主入口類加上@EnableHystrixDashboard註解即可,這種配置方式也算是Spring-boot配置的常規操作了。

@SpringBootApplication
@EnableHystrixDashboard
public class SpringCloudHystrixDashboardDemoApplication {

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

}

新增監控服務

以上配置工作完成後,訪問如下地址即可訪問熔斷器管理頁面

http://localhost:9991/hystrix

頁面效果如下

然後我們需要在頁面上配置我們需要訪問的服務,下面我們簡單介紹下Hystrix Dashboard的簡單用法。

服務地址

開始之前我們先介紹下頁面上的文字描述,這些提示資訊主要是告訴我們位址列如何輸入的,第一行提示的意思是,如果我們要訪問Turbine預設叢集的話,訪問地址如下:

https://turbine-hostname:port/turbine.stream

第二行提示的意思是,如果我們要訪問指定turbine叢集的話,訪問地址如下:

https://turbine-hostname:port/turbine.stream?cluster=[clusterName]

最後一行的意思是如果我們要訪問單節點的Hystrix服務的話,訪問地址如下:

https://hystrix-app:port/actuator/hystrix.stream

這裡簡單介紹下,turbineNetflix提供了一個開源專案,主要是為了方便我們把多個hystrix.stream的內容聚合為一個數據源供Dashboard展示。我們這裡只是一個單點Hystrix,所以位址列直接填寫第三個地址就可以了:

http://localhost:9991/actuator/hystrix.stream
重新整理時間

頁面上的Delay就是請求間隔時間,單位是ms,時間間隔越小,資料越詳細,但是被監控的服務請求壓力也越大

標題

頁面上的Title設定的是我們監控頁面顯示的標題,這個可以根據自己的情況填寫

填寫完成後,直接點選底下Monitor Stream按鈕就可進入監控頁:

擴充套件

我用瀏覽器訪問了下我們剛剛輸入的監控地址,發現它的請求方式就是text/event-stream,也就是webflux,這也是webflux最典型的應用場景。

這也表面,如果你覺得hystrix-dashboard面板做的醜的話,你是可以自定義監控頁面的,直接呼叫actuator/hystrix.stream介面即可。

踩坑

這裡是可能遇到的問題,也算是我踩坑過程的一些記錄,如果遇到問題,可以參考解決。

提示Unable to connect to Command Metric Stream

如果訪問之後,你的頁面有如下提示:

這時候你需要先看下後端控制檯提示資訊

404錯誤

這個錯誤通常是因為你的監控地址填寫不正確,好好檢查下應該就可以解決

如果檢查完,發現地址也沒有問題,那應該是因為斷路器服務未新增actuator的依賴導致的,你只需要新增下面的依賴即可:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
後臺提示is not in the allowed

如果控制檯有如下提示資訊,表面你沒有配置允許訪問熔斷監控頁面的地址:

你只需要在你的hystrix-dashBoard配置檔案中新增如下配置即可:

hystrix.dashboard.proxy-stream-allow-list= localhost
頁面一直Loading

如果一直如下顯示,這是因為你的服務一直沒有被訪問,所以沒有監控資料

只要你呼叫一下服務中用到斷路器的介面,就會看到監控資料:

總結

好了,hystrix相關的知識點暫時就分享到這裡,後面有機會的話,我們再來剖析hystrix的其他相關知識。

最近這幾天一直忘記分享demo專案的地址了,今天一併發出,剛興趣的小夥伴可以去看下:

  • spring-cloud之服務治理元件Eureka

    https://github.com/Syske/learning-dome-code/tree/dev/spring-cloud-eureka-demo
    
  • spring-cloud服務治理元件Eureka客戶端(包括feignribbon兩種)

    https://github.com/Syske/learning-dome-code/tree/dev/spring-cloud-client-demo
    
  • spring-cloud整合hystrix斷路器

    https://github.com/Syske/learning-dome-code/tree/dev/Spring-cloud-hystrix-demo
    
  • spring-cloud整合hystrix監控面板

    https://github.com/Syske/learning-dome-code/tree/dev/spring-cloud-hystrix-dashboard-demo
    

有興趣的小夥伴可以關注下這個專案,我所有的學習demo都在,之前推送到的內容相關程式碼也存在這個倉庫下,目前已經有60多個專案,還在持續更新

  • 專案地址

    https://github.com/Syske/learning-dome-code
    
  • 專案截圖