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

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

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

  • eureka-server:服務註冊中心github

  • eureka-client:服務提供者spring

  • 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。app

  • 編輯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分鐘內流量的相對變化,咱們能夠經過它來觀察到流量的上升和降低趨勢。

  • 其餘一些數量指標以下圖所示:

更多Spring Cloud內容請持續關注個人博客更新或在《Spring Cloud微服務實戰》中獲取。

代碼示例

樣例工程將沿用以前在碼雲和GitHub上建立的SpringCloud-Learning項目,從新作了一下整理。經過不一樣目錄來區分Brixton和Dalston的示例。

相關閱讀

相關文章
相關標籤/搜索