Spring Cloud(五):Hystrix 監控面板【Finchley 版】
在上一篇 Hystrix 的介紹中,我們提到斷路器是根據一段時間窗內的請求情況來判斷並操作斷路器的打開和關閉狀態的。而這些請求情況的指標信息都是 HystrixCommand 和 HystrixObservableCommand 實例在執行過程中記錄的重要度量信息,它們除了 Hystrix 斷路器實現中使用之外,對於系統運維也有非常大的幫助。這些指標信息會以 “滾動時間窗” 與 “桶” 結合的方式進行匯總,並在內存中駐留一段時間,以供內部或外部進行查詢使用,Hystrix Dashboard 就是這些指標內容的消費者之一。
下面我們基於之前的示例來結合 Hystrix Dashboard 實現 Hystrix 指標數據的可視化面板,這里我們將用到下之前實現的幾個應用,包括:
- eureka-server:服務注冊中心
- eureka-producer:服務提供者
- eureka-consumer-feign-hystrix:使用 Feign 和 Hystrix 實現的服務消費者
創建 Hystrix Dashboard
創建一個標准的 Spring Boot 工程,命名為:hystrix-dashboard
POM 配置
在 pom.xml 引入相關的依賴
1 |
<dependency> |
啟動類
在 Spring Boot 的啟動類上面引入注解@EnableHystrixDashboard
,啟用 Hystrix Dashboard 功能。
1 |
|
配置文件
修改配置文件 application.yml
1 |
spring: |
啟動應用,然后再瀏覽器中輸入 http://localhost:11000/hystrix 可以看到如下界面
通過 Hystrix Dashboard 主頁面的文字介紹,我們可以知道,Hystrix Dashboard 共支持三種不同的監控方式:
- 默認的集群監控:通過 URL:http://turbine-hostname:port/turbine.stream 開啟,實現對默認集群的監控。
- 指定的集群監控:通過 URL:http://turbine-hostname:port/turbine.stream?cluster=[clusterName] 開啟,實現對 clusterName 集群的監控。
- 單體應用的監控:
通過 URL:http://hystrix-app:port/hystrix.stream 開啟,實現對具體某個服務實例的監控。(現在這里的 URL 應該為 http://hystrix-app:port/actuator/hystrix.stream,Actuator 2.x 以后 endpoints 全部在/actuator
下,可以通過management.endpoints.web.base-path
修改)
前兩者都對集群的監控,需要整合 Turbine 才能實現。這一部分我們先實現對單體應用的監控,這里的單體應用就用我們之前使用 Feign 和 Hystrix 實現的服務消費者——eureka-consumer-feign-hystrix。
頁面上的另外兩個參數:
- Delay:控制服務器上輪詢監控信息的延遲時間,默認為 2000 毫秒,可以通過配置該屬性來降低客戶端的網絡和 CPU 消耗。
- Title:該參數可以展示合適的標題。
為服務實例添加 endpoint
既然 Hystrix Dashboard 監控單實例節點需要通過訪問實例的/actuator/hystrix.stream
接口來實現,自然我們需要為服務實例添加這個 endpoint。
POM 配置
在服務實例pom.xml
中的dependencies
節點中新增spring-boot-starter-actuator
監控模塊以開啟監控相關的端點,並確保已經引入斷路器的依賴spring-cloud-starter-netflix-hystrix
1 |
<dependency> |
啟動類
為啟動類添加@EnableCircuitBreaker
或@EnableHystrix
注解,開啟斷路器功能。
1 |
|
配置文件
在配置文件 application.yml 中添加
1 |
management: |
management.endpoints.web.exposure.include
這個是用來暴露 endpoints 的。由於 endpoints 中會包含很多敏感信息,除了 health 和 info 兩個支持 web 訪問外,其他的默認不支持 web 訪問。詳情請看 50. Endpoints
測試
在 Hystrix-Dashboard 的主界面上輸入 eureka-consumer-feign-hystrix 對應的地址 http://localhost:9004/actuator/hystrix.stream 然后點擊 Monitor Stream 按鈕,進入頁面。
如果沒有請求會一直顯示 “Loading…”,這時訪問 http://localhost:9004/actuator/hystrix.stream 也是不斷的顯示 “ping”。
這時候訪問一下 http://localhost:9004/hello/windmt,可以看到 Hystrix Dashboard 中出現了類似下面的效果
如果在這個頁面看到報錯:
Unable to connect to Command Metric Stream.
,可以參考這個 Issue 解決。
界面解讀
- 實心圓:它有顏色和大小之分,分別代表實例的監控程度和流量大小。如上圖所示,它的健康度從綠色、黃色、橙色、紅色遞減。通過該實心圓的展示,我們就可以在大量的實例中快速的發現故障實例和高壓力實例。
- 曲線:用來記錄 2 分鍾內流量的相對變化,我們可以通過它來觀察到流量的上升和下降趨勢。
- 其他一些數量指標如下圖所示
到此單個應用的熔斷監控已經完成。
相關閱讀
Spring Cloud(一):服務治理技術概覽
Spring Cloud(二):服務注冊與發現 Eureka
Spring Cloud(三):服務提供與調用 Eureka
Spring Cloud(四):服務容錯保護 Hystrix
Spring Cloud(五):Hystrix 監控面板
Spring Cloud(六):Hystrix 監控數據聚合 Turbine
Spring Cloud(七):配置中心(Git 版與動態刷新)
Spring Cloud(八):配置中心(服務化與高可用)
Spring Cloud(九):配置中心(消息總線)
Spring Cloud(十):服務網關 Zuul(路由)
Spring Cloud(十一):服務網關 Zuul(過濾器)
Spring Cloud(十二):分布式鏈路跟蹤(Sleuth 與 Zipkin)
示例代碼:GitHub
參考
springcloud(五):熔斷監控 Hystrix Dashboard 和 Turbine
Spring Cloud 構建微服務架構:Hystrix 監控面板【Dalston 版】
Unable to connect to Command Metric Stream
- 本文鏈接: https://windmt.com/2018/04/16/spring-cloud-5-hystrix-dashboard/
- 版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協議。轉載請注明出處!