天天看點

springcloud(五):熔斷監控Hystrix Dashboard和Turbine

Hystrix-dashboard是一款針對Hystrix進行實時監控的工具,通過Hystrix Dashboard我們可以在直覺地看到各Hystrix Command的請求響應時間, 請求成功率等資料。但是隻使用Hystrix Dashboard的話, 你隻能看到單個應用内的服務資訊, 這明顯不夠. 我們需要一個工具能讓我們彙總系統内多個服務的資料并顯示到Hystrix Dashboard上, 這個工具就是Turbine.

我們在熔斷示例項目spring-cloud-consumer-hystrix的基礎上更改,重新命名為:spring-cloud-consumer-hystrix-dashboard。

這三個包必須添加

啟動類添加啟用Hystrix Dashboard和熔斷器

圖中會有一些提示:

大概意思就是如果檢視預設叢集使用第一個url,檢視指定叢集使用第二個url,單個應用的監控使用最後一個,我們暫時隻示範單個應用的是以在輸入框中輸入:

如果沒有請求會先顯示<code>Loading ...</code>,通路http://localhost:9001/hystrix.stream 也會不斷的顯示ping。

請求服務http://localhost:9001/hello/neo,就可以看到監控的效果了,首先通路http://localhost:9001/hystrix.stream,顯示如下:

說明已經傳回了監控的各項結果

到監控頁面就會顯示如下圖:

其實就是http://localhost:9001/hystrix.stream傳回結果的圖形化顯示,Hystrix Dashboard Wiki上詳細說明了圖上每個名額的含義,如下圖:

到此單個應用的熔斷監控已經完成。

在複雜的分布式系統中,相同服務的節點經常需要部署上百甚至上千個,很多時候,運維人員希望能夠把相同服務的節點狀态以一個整體叢集的形式展現出來,這樣可以更好的把握整個系統的狀态。 為此,Netflix提供了一個開源項目(Turbine)來提供把多個hystrix.stream的内容聚合為一個資料源供Dashboard展示。

<code>turbine.appConfig</code> :配置Eureka中的serviceId清單,表明監控哪些服務

<code>turbine.aggregator.clusterConfig</code> :指定聚合哪些叢集,多個使用","分割,預設為default。可使用<code>http://.../turbine.stream?cluster={clusterConfig之一}</code>通路

<code>turbine.clusterNameExpression</code> : 1. clusterNameExpression指定叢集名稱,預設表達式appName;此時:<code>turbine.aggregator.clusterConfig</code>需要配置想要監控的應用名稱;2. 當clusterNameExpression: default時,<code>turbine.aggregator.clusterConfig</code>可以不寫,因為預設就是default;3. 當clusterNameExpression: metadata['cluster']時,假設想要監控的應用配置了<code>eureka.instance.metadata-map.cluster: ABC</code>,則需要配置,同時<code>turbine.aggregator.clusterConfig: ABC</code>

啟動類添加<code>@EnableTurbine</code>,激活對Turbine的支援

到此Turbine(hystrix-dashboard-turbine)配置完成

在示例項目spring-cloud-consumer-hystrix基礎上修改為兩個服務的調用者spring-cloud-consumer-node1和spring-cloud-consumer-node2

spring-cloud-consumer-node1項目改動如下:

application.properties檔案内容

spring-cloud-consumer-node2項目改動如下:

HelloRemote類修改:

對應的<code>HelloRemoteHystrix</code>和<code>ConsumerController</code>類跟随修改,具體檢視代碼

修改完畢後,依次啟動spring-cloud-eureka、spring-cloud-consumer-node1、spring-cloud-consumer-node1、hystrix-dashboard-turbine(Turbine)

打開eureka背景可以看到注冊了三個服務:

傳回:

<a href="https://github.com/ityouknow/spring-cloud-starter">示例代碼</a>

參考:

<a href="https://www.gitbook.com/book/eacdy/spring-cloud-book/details">使用Spring Cloud與Docker實戰微服務</a>

http://www.cnblogs.com/ityouknow/p/6889059.html