整合spring-cloud-Hystrix監(jiān)控面板

前言
昨天我們分享了Hystrix熔斷的相關(guān)知識(shí)點(diǎn),但由于時(shí)間的關(guān)系,還有一些基礎(chǔ)內(nèi)容沒(méi)有來(lái)得及分享,今天我們花一點(diǎn)時(shí)間補(bǔ)充下。
今天我們補(bǔ)充的內(nèi)容主要是關(guān)于Hystrix監(jiān)控面板的,這一塊雖然不算核心內(nèi)容,但是也比較重要。好了,下面我們直接開(kāi)始吧。
Hystrix控制面板
首先你需要?jiǎng)?chuàng)建一個(gè)spring-boot項(xiàng)目,或者用我們之前的項(xiàng)目也可以,然后添加hystrix-dashboard相關(guān)依賴。
依賴
依賴文件也比較少,就一個(gè)pom依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
<version>2.2.9.RELEASE</version>
</dependency>
但是你需要在斷路器服務(wù)中添加actuator依賴,默認(rèn)情況下是沒(méi)有這個(gè)依賴的,這個(gè)依賴主要是為了監(jiān)控spring boot服務(wù)的監(jiān)控狀況。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
如果這個(gè)包添加成功后,訪問(wèn)服務(wù)的/actuator,應(yīng)該是有數(shù)據(jù)正常返回的:

項(xiàng)目配置
添加完依賴之后,我們還需要進(jìn)行一些簡(jiǎn)單配置,才能啟用HystrixDashboard,不過(guò)啟用的方式很簡(jiǎn)單,你只需要在項(xiàng)目主入口類加上@EnableHystrixDashboard注解即可,這種配置方式也算是Spring-boot配置的常規(guī)操作了。
@SpringBootApplication
@EnableHystrixDashboard
public class SpringCloudHystrixDashboardDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudHystrixDashboardDemoApplication.class, args);
}
}
添加監(jiān)控服務(wù)
以上配置工作完成后,訪問(wèn)如下地址即可訪問(wèn)熔斷器管理頁(yè)面
http://localhost:9991/hystrix
頁(yè)面效果如下

然后我們需要在頁(yè)面上配置我們需要訪問(wèn)的服務(wù),下面我們簡(jiǎn)單介紹下Hystrix Dashboard的簡(jiǎn)單用法。
服務(wù)地址
開(kāi)始之前我們先介紹下頁(yè)面上的文字描述,這些提示信息主要是告訴我們地址欄如何輸入的,第一行提示的意思是,如果我們要訪問(wèn)Turbine默認(rèn)集群的話,訪問(wèn)地址如下:
https://turbine-hostname:port/turbine.stream
第二行提示的意思是,如果我們要訪問(wèn)指定turbine集群的話,訪問(wèn)地址如下:
https://turbine-hostname:port/turbine.stream?cluster=[clusterName]
最后一行的意思是如果我們要訪問(wèn)單節(jié)點(diǎn)的Hystrix服務(wù)的話,訪問(wèn)地址如下:
https://hystrix-app:port/actuator/hystrix.stream
這里簡(jiǎn)單介紹下,turbine是Netflix提供了一個(gè)開(kāi)源項(xiàng)目,主要是為了方便我們把多個(gè)hystrix.stream的內(nèi)容聚合為一個(gè)數(shù)據(jù)源供Dashboard展示。我們這里只是一個(gè)單點(diǎn)Hystrix,所以地址欄直接填寫(xiě)第三個(gè)地址就可以了:
http://localhost:9991/actuator/hystrix.stream
刷新時(shí)間
頁(yè)面上的Delay就是請(qǐng)求間隔時(shí)間,單位是ms,時(shí)間間隔越小,數(shù)據(jù)越詳細(xì),但是被監(jiān)控的服務(wù)請(qǐng)求壓力也越大
標(biāo)題
頁(yè)面上的Title設(shè)置的是我們監(jiān)控頁(yè)面顯示的標(biāo)題,這個(gè)可以根據(jù)自己的情況填寫(xiě)
填寫(xiě)完成后,直接點(diǎn)擊底下Monitor Stream按鈕就可進(jìn)入監(jiān)控頁(yè):

擴(kuò)展
我用瀏覽器訪問(wèn)了下我們剛剛輸入的監(jiān)控地址,發(fā)現(xiàn)它的請(qǐng)求方式就是text/event-stream,也就是webflux,這也是webflux最典型的應(yīng)用場(chǎng)景。

這也表面,如果你覺(jué)得hystrix-dashboard面板做的丑的話,你是可以自定義監(jiān)控頁(yè)面的,直接調(diào)用actuator/hystrix.stream接口即可。
踩坑
這里是可能遇到的問(wèn)題,也算是我踩坑過(guò)程的一些記錄,如果遇到問(wèn)題,可以參考解決。
提示Unable to connect to Command Metric Stream
如果訪問(wèn)之后,你的頁(yè)面有如下提示:

這時(shí)候你需要先看下后端控制臺(tái)提示信息
404錯(cuò)誤
這個(gè)錯(cuò)誤通常是因?yàn)槟愕谋O(jiān)控地址填寫(xiě)不正確,好好檢查下應(yīng)該就可以解決

如果檢查完,發(fā)現(xiàn)地址也沒(méi)有問(wèn)題,那應(yīng)該是因?yàn)閿嗦菲鞣?wù)未添加actuator的依賴導(dǎo)致的,你只需要添加下面的依賴即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
后臺(tái)提示is not in the allowed
如果控制臺(tái)有如下提示信息,表面你沒(méi)有配置允許訪問(wèn)熔斷監(jiān)控頁(yè)面的地址:

你只需要在你的hystrix-dashBoard配置文件中添加如下配置即可:
hystrix.dashboard.proxy-stream-allow-list= localhost
頁(yè)面一直Loading
如果一直如下顯示,這是因?yàn)槟愕姆?wù)一直沒(méi)有被訪問(wèn),所以沒(méi)有監(jiān)控?cái)?shù)據(jù)

只要你調(diào)用一下服務(wù)中用到斷路器的接口,就會(huì)看到監(jiān)控?cái)?shù)據(jù):

總結(jié)
好了,hystrix相關(guān)的知識(shí)點(diǎn)暫時(shí)就分享到這里,后面有機(jī)會(huì)的話,我們?cè)賮?lái)剖析hystrix的其他相關(guān)知識(shí)。
最近這幾天一直忘記分享demo項(xiàng)目的地址了,今天一并發(fā)出,有興趣的小伙伴可以去看下:
spring-cloud之服務(wù)治理組件Eurekahttps://github.com/Syske/learning-dome-code/tree/dev/spring-cloud-eureka-demospring-cloud服務(wù)治理組件Eureka客戶端(包括feign和ribbon兩種)https://github.com/Syske/learning-dome-code/tree/dev/spring-cloud-client-demospring-cloud整合hystrix斷路器https://github.com/Syske/learning-dome-code/tree/dev/Spring-cloud-hystrix-demospring-cloud整合hystrix監(jiān)控面板https://github.com/Syske/learning-dome-code/tree/dev/spring-cloud-hystrix-dashboard-demo
有興趣的小伙伴可以關(guān)注下這個(gè)項(xiàng)目,我所有的學(xué)習(xí)demo都在,之前推送到的內(nèi)容相關(guān)代碼也存在這個(gè)倉(cāng)庫(kù)下,目前已經(jīng)有60多個(gè)項(xiàng)目,還在持續(xù)更新
項(xiàng)目地址
https://github.com/Syske/learning-dome-code項(xiàng)目截圖

