整合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
這裡簡單介紹下,turbine
是Netflix
提供了一個開源專案,主要是為了方便我們把多個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
客戶端(包括feign
和ribbon
兩種)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
-
專案截圖