當前位置:
首頁 > 最新 > spring cloud netflix:斷路器之Hystrix Dashboard

spring cloud netflix:斷路器之Hystrix Dashboard

斷路器:Hystrix Dashboard

Hystrix的主要優勢之一是它可以收集的每個HystrixCommand的指標集。Hystrix Dashboard可以很好的顯示每個斷路器的健康狀況。

圖1:Hystrix Dashboard

包含Hystrix Dashboard

maven依賴:

在Spring Boot主類上使用@EnableHystrixDashboard註解來運行Hystrix Dashboard,然後訪問/hystrix,並將dashboard指向Hystrix客戶端應用程序實例的/hystrix.stream端點。


Turbine

查看單個實例的Hystrix數據對整個系統的健康狀況不是很有用。Turbine是一個匯總所有相關的/hystrix.stream端點到一個/turbine.stream的應用程序,將/turbine.stream用於Hystrix Dashboard,可以查看匯總指標數據。單個實例可以通過Eureka找到。在主類上使用@EnableTurbine註解來運行Turbine(引入spring-cloud-starter-turbine依賴)。Turbine 1 wiki(https://github.com/Netflix/Turbine/wiki/Configuration-(1.x))中記錄的配置屬性均適用。唯一的區別是turbine.instanceUrlSuffix不需要附加埠,除非設置turbine.instanceInsertPort為false,否則它會自動處理。

提示:默認情況,Turbine通過在Eureka中查找已註冊實例的homePageUrl條目來查找其/hystrix.stream端點,然後添加/hystrix.stream到Turbine中。這意味著,如果spring-boot-actuator運行在自己的埠上(這是默認設置),那麼對/hystrix.stream的調用將失敗。為了讓turbine在正確的埠找到Hystrix stream,你需要將management.port添加到實例的元數據中:

turbine.appConfig是turbine用於查找實例的eureka serviceIds列表,然後將turbine stream用於Hystrix Dashboard,對應的url類似:http://my.turbine.sever:8080/turbine.stream?cluster=;(如果名稱為「default」,則可以省略cluster參數)。cluster參數必須和turbine.aggregator.clusterConfig中的條目匹配。從eureka返回的值是大寫的,所以,如果有一個名為「customers」的應用程序註冊到eureka,則配置如下:

clusterName可以通過在turbine.clusterNameExpression配置項中使用SPEL表達式進行定義(原文:The clusterName can becustomized by a SPEL expression in turbine.clusterNameExpression with root aninstance of InstanceInfo.)。默認值是appName,這意味著Eureka serviceId最終作為集群key(即customers的InstanceInfo具有「CUSTOMERS」的appName)。另一個示例是turbine.clusterNameExpression=aSGName,它將從AWSASG名稱中獲取集群名稱。另一個例子:

在這種情況下,4個服務的集群名稱將從其元數據映射中提取出來,並且包含「SYSTEM」和「USER」。

要為所有應用程序使用「default」集群,你需要一個字元串文字表達式(帶單引號,如果在YAML中則用雙引號轉義):

Spring Cloud提供的spring-cloud-starter-turbine包含了運行Turbine伺服器所需的全部依賴。只需要創建一個Spring Boot應用程序並在主類上使用@EnableTurbine註解即可。

提示:默認情況下,Spring Cloud允許Turbine使用主機和埠為每個主機,每個集群支持多進程。如果你希望Turbine中內置的本地Netflix行為不支持每個主機,每個集群(實例id的key是主機名)都有多個進程,那麼可以設置屬性turbine.combineHostPort為false。


Turbine Stream

在一些環境中(如PaaS設置中),從所有分散式Hystrix命令中提取指標數據的傳統的Turbine模型不起作用。這種情況下,你可能希望讓你的Hystrix命令將指標數據推送到Turbine(Spring Cloud通過消息中間件來實現)。在客戶端,你只需要添加spring-cloud-netflix-hystrix-stream和spring-cloud-starter-stream-*依賴(查看Spring Cloud Stream文檔獲取代理相關的詳細信息,以及如何配置客戶端憑證,本地代理是開箱即用的)。

然後,你可以將Hystrix dashboard指向Turbine Stream Server,而不是單獨的Hystrix Stream。如果Turbine Stream在myhost的8989埠上,則將http://myhost:8989設置到HystrixDashboard的stream輸入欄位中。circuit將以它們各自的serviceId為前綴,後面是一個點,然後是circuit的名稱。

Spring Cloud提供的spring-cloud-starter-turbine-stream包含了運行Turbine Stream伺服器所需的全部依賴——只需要再添加你想要的Streambinder依賴,如spring-cloud-starter-stream-rabbit。你需要運行在Java 8上,因為是基於Netty實現的。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 小魚Aha 的精彩文章:

Kubernetes組件

TAG:小魚Aha |