天天看點

Spring Cloud建構微服務架構:Hystrix監控面闆【Dalston版】

下面我們基于之前的示例來結合Hystrix Dashboard實作Hystrix名額資料的可視化面闆,這裡我們将用到下之前實作的幾個應用,包括:

eureka-server:服務注冊中心

eureka-client:服務提供者

eureka-consumer-ribbon-hystrix:使用ribbon和hystrix實作的服務消費者

由于eureka-consumer-ribbon-hystrix項目中的<code>/consumer</code>接口實作使用了<code>@HystrixCommand</code>修飾,是以這個接口的調用情況會被Hystrix記錄下來,以用來給斷路器和Hystrix Dashboard使用。斷路器我們在上一篇中已經介紹過了,下面我們來具體說說Hystrix Dashboard的建構。

在Spring Cloud中建構一個Hystrix Dashboard非常簡單,隻需要下面四步:

建立一個标準的Spring Boot工程,命名為:hystrix-dashboard。

編輯pom.xml,具體依賴内容如下:

為應用主類加上<code>@EnableHystrixDashboard</code>,啟用Hystrix Dashboard功能。

根據實際情況修改<code>application.properties</code>配置檔案,比如:選擇一個未被占用的端口等,此步非必須。

到這裡我們已經完成了基本配置,接下來我們可以啟動該應用,并通路:<code>http://localhost:1301/hystrix</code>,我們可以看到如下頁面:

這是Hystrix Dashboard的監控首頁,該頁面中并沒有具體的監控資訊。從頁面的文字内容中我們可以知道,Hystrix Dashboard共支援三種不同的監控方式,依次為:

預設的叢集監控:通過URL<code>http://turbine-hostname:port/turbine.stream</code>開啟,實作對預設叢集的監控。

指定的叢集監控:通過URL<code>http://turbine-hostname:port/turbine.stream?cluster=[clusterName]</code>開啟,實作對clusterName叢集的監控。

單體應用的監控:通過URL<code>http://hystrix-app:port/hystrix.stream</code>開啟,實作對具體某個服務執行個體的監控。

前兩者都對叢集的監控,需要整合Turbine才能實作,這部分内容我們将在下一篇中做詳細介紹。在本節中,我們主要實作對單個服務執行個體的監控,是以這裡我們先來實作單個服務執行個體的監控。

既然Hystrix Dashboard監控單執行個體節點需要通過通路執行個體的<code>/hystrix.stream</code>接口來實作,自然我們需要為服務執行個體添加這個端點,而添加該功能的步驟也同樣簡單,隻需要下面兩步:

在服務執行個體<code>pom.xml</code>中的<code>dependencies</code>節點中新增<code>spring-boot-starter-actuator</code>監控子產品以開啟監控相關的端點,并確定已經引入斷路器的依賴<code>spring-cloud-starter-hystrix</code>:

確定在服務執行個體的主類中已經使用<code>@EnableCircuitBreaker</code>或<code>@EnableHystrix</code>注解,開啟了斷路器功能。

到這裡已經完成了所有的配置,我們可以在Hystrix Dashboard的首頁輸入<code>http://localhost:2101/hystrix.stream</code>,已啟動對“eureka-consumer-ribbon-hystrix”的監控,點選“Monitor Stream”按鈕,此時我們可以看到如下頁面:

在對該頁面介紹前,我們先看看在首頁中我們還沒有介紹的兩外兩個參數:

<code>Delay</code>:該參數用來控制伺服器上輪詢監控資訊的延遲時間,預設為2000毫秒,我們可以通過配置該屬性來降低用戶端的網絡和CPU消耗。

<code>Title</code>:該參數對應了上圖頭部标題Hystrix Stream之後的内容,預設會使用具體監控執行個體的URL,我們可以通過配置該資訊來展示更合适的标題。

回到監控頁面,我們來詳細說說其中各元素的具體含義:

我們可以在監控資訊的左上部分找到兩個重要的圖形資訊:一個實心圓和一條曲線。

實心圓:共有兩種含義。它通過顔色的變化代表了執行個體的健康程度,如下圖所示,它的健康度從綠色、黃色、橙色、紅色遞減。該實心圓除了顔色的變化之外,它的大小也會根據執行個體的請求流量發生變化,流量越大該實心圓就越大。是以通過該實心圓的展示,我們就可以在大量的執行個體中快速的發現故障執行個體和高壓力執行個體。

曲線:用來記錄2分鐘内流量的相對變化,我們可以通過它來觀察到流量的上升和下降趨勢。

其他一些數量名額如下圖所示:

更多Spring Cloud内容請持續關注我的部落格更新或在《Spring Cloud微服務實戰》中擷取。

樣例工程将沿用之前在碼雲和GitHub上建立的SpringCloud-Learning項目,重新做了一下整理。通過不同目錄來區分Brixton和Dalston的示例。

<a href="https://link.jianshu.com?t=http://blog.didispace.com/spring-cloud-starter-dalston-1/" target="_blank">Spring Cloud建構微服務架構:服務注冊與發現(Eureka、Consul)</a>

<a href="https://link.jianshu.com?t=http://blog.didispace.com/spring-cloud-starter-dalston-2-1/" target="_blank">Spring Cloud建構微服務架構:服務消費者(基礎)</a>

<a href="https://link.jianshu.com?t=http://blog.didispace.com/spring-cloud-starter-dalston-2-2/" target="_blank">Spring Cloud建構微服務架構:服務消費者(Ribbon)</a>

<a href="https://link.jianshu.com?t=http://blog.didispace.com/spring-cloud-starter-dalston-2-3/" target="_blank">Spring Cloud建構微服務架構:服務消費者(Feign)</a>

<a href="https://link.jianshu.com?t=http://blog.didispace.com/spring-cloud-starter-dalston-3" target="_blank">Spring Cloud建構微服務架構:分布式配置中心</a>

<a href="https://link.jianshu.com?t=http://blog.didispace.com/spring-cloud-starter-dalston-4-1" target="_blank">Spring Cloud建構微服務架構:服務容錯保護(hystrix服務降級)</a>

<a href="https://link.jianshu.com?t=http://blog.didispace.com/spring-cloud-starter-dalston-4-2" target="_blank">Spring Cloud建構微服務架構:服務容錯保護(hystrix依賴隔離)</a>

<a href="https://link.jianshu.com?t=http://blog.didispace.com/spring-cloud-starter-dalston-4-3" target="_blank">Spring Cloud建構微服務架構:服務容錯保護(hystrix斷路器)</a>

<a href="https://link.jianshu.com?t=http://blog.didispace.com/Spring-Cloud%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/" target="_blank">更多Spring Cloud内容...</a>