1. 程式人生 > >Spring Cloud構建微服務架構 Hystrix監控面板【Dalston版】

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

neu 展示 重要 故障 span ive 技術 健康 度量

在上一篇《服務容錯保護(hystrix斷路器)》的介紹中,我們提到斷路器是根據一段時間窗內的請求情況來判斷並操作斷路器的打開和關閉狀態的。而這些請求情況的指標信息都是HystrixCommand和HystrixObservableCommand實例在執行過程中記錄的重要度量信息,它們除了Hystrix斷路器實現中使用之外,對於系統運維也有非常大的幫助。這些指標信息會以“滾動時間窗”與“桶”結合的方式進行匯總,並在內存中駐留一段時間,以供內部或外部進行查詢使用,Hystrix Dashboard就是這些指標內容的消費者之一。

下面我們基於之前的示例來結合Hystrix Dashboard實現Hystrix指標數據的可視化面板,這裏我們將用到下之前實現的幾個應用,包括:

  • eureka-server:服務註冊中心
  • eureka-client:服務提供者
  • eureka-consumer-ribbon-hystrix:使用ribbon和hystrix實現的服務消費者

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

動手試一試

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

  • 創建一個標準的Spring Boot工程,命名為:hystrix-dashboard。
  • 編輯pom.xml,具體依賴內容如下:
<parent>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-parent</artifactId>
	<version>Dalston.SR1</version>
	<relativePath />
</parent>
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
  • 為應用主類加上@EnableHystrixDashboard,啟用Hystrix Dashboard功能。
@EnableHystrixDashboard
@SpringCloudApplication
public class HystrixDashboardApplication {
	public static void main(String[] args) {
		SpringApplication.run(HystrixDashboardApplication.class, args);
	}
}
  • 根據實際情況修改application.properties配置文件,比如:選擇一個未被占用的端口等,此步非必須。
spring.application.name=hystrix-dashboard
server.port=1301

到這裏我們已經完成了基本配置,接下來我們可以啟動該應用,並訪問:http://localhost:1301/hystrix,我們可以看到如下頁面:

技術分享圖片

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

  • 默認的集群監控:通過URLhttp://turbine-hostname:port/turbine.stream開啟,實現對默認集群的監控。
  • 指定的集群監控:通過URLhttp://turbine-hostname:port/turbine.stream?cluster=[clusterName]開啟,實現對clusterName集群的監控。
  • 單體應用的監控:通過URLhttp://hystrix-app:port/hystrix.stream開啟,實現對具體某個服務實例的監控。

前兩者都對集群的監控,需要整合Turbine才能實現,這部分內容我們將在下一篇中做詳細介紹。在本節中,我們主要實現對單個服務實例的監控,所以這裏我們先來實現單個服務實例的監控。

既然Hystrix Dashboard監控單實例節點需要通過訪問實例的/hystrix.stream接口來實現,自然我們需要為服務實例添加這個端點,而添加該功能的步驟也同樣簡單,只需要下面兩步:

  • 在服務實例pom.xml中的dependencies節點中新增spring-boot-starter-actuator監控模塊以開啟監控相關的端點,並確保已經引入斷路器的依賴spring-cloud-starter-hystrix
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 確保在服務實例的主類中已經使用@EnableCircuitBreaker@EnableHystrix註解,開啟了斷路器功能。

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

技術分享圖片

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

  • Delay:該參數用來控制服務器上輪詢監控信息的延遲時間,默認為2000毫秒,我們可以通過配置該屬性來降低客戶端的網絡和CPU消耗。
  • Title:該參數對應了上圖頭部標題Hystrix Stream之後的內容,默認會使用具體監控實例的URL,我們可以通過配置該信息來展示更合適的標題。

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

  • 我們可以在監控信息的左上部分找到兩個重要的圖形信息:一個實心圓和一條曲線。
    • 實心圓:共有兩種含義。它通過顏色的變化代表了實例的健康程度,如下圖所示,它的健康度從綠色、黃色、橙色、紅色遞減。該實心圓除了顏色的變化之外,它的大小也會根據實例的請求流量發生變化,流量越大該實心圓就越大。所以通過該實心圓的展示,我們就可以在大量的實例中快速的發現故障實例和高壓力實例。
      技術分享圖片
    • 曲線:用來記錄2分鐘內流量的相對變化,我們可以通過它來觀察到流量的上升和下降趨勢。
  • 其他一些數量指標如下圖所示:
    技術分享圖片

代碼示例

  • 碼雲:點擊查看
  • GitHub:點擊查看

原文由程序猿DD-翟永超創作,原文地址:http://blog.didispace.com/spring-cloud-starter-dalston-5-1/

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

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