SpringCloud系列十七:Hystrix的監控

1. 回顧spring

  上文講解了使用Hystrix爲Feign添加回退,並經過Fallback Factory檢查回退緣由以及如何爲Feign客戶端禁用Hystrix。瀏覽器

2. Hystrix的監控架構

  除實現容錯外,Hystrix還提供了近乎實時的監控。HystrixCommand和HystrixObservableCommand在執行時,app

會生成執行結果和運行指標,好比每秒執行的請求數、成功數等,這些監控數據對分析應用系統的狀態頗有用。ide

  使用Hystrix的模塊 hystrix-metrics-event-stream ,就可將這些監控的指標信息以 text/event-stream 的格式spring-boot

暴露給外部系統。spring-cloud-starter-hystrix包含該模塊,在此基礎上,只須爲項目添加spring-boot-starter-actuator,微服務

就可以使用 /hystrix.stream 端點獲取Hystrix的監控信息了。測試

 

  > 啓動項目 microservice-discovery-eurekaui

  > 啓動項目 microservice-provider-userspa

  > 修改項目 microservice-consumer-movie-ribbon-hystrix 的啓動類。添加以下方法

/**
 * 低版本直接啓動便可使用 http://ip:port/hystrix.stream 查看監控信息
 * 高版本須要添加本方法方可以使用 http://ip:port/hystix.stream 查看監控信息
 * 
 * @return
 */
@Bean
public ServletRegistrationBean getServlet() {
    HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
    ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
    registrationBean.setLoadOnStartup(1);
    registrationBean.addUrlMappings("/hystrix.stream");
    registrationBean.setName("HystrixMetricsStreamServlet");
    return registrationBean;
}

  > 啓動項目 microservice-consumer-movie-ribbon-hystrix

  > 訪問 http://localhost:8010/hystrix.stream,可看到瀏覽器一直處於請求的狀態,頁面一直處於請求狀態,並一直打印ping。

    由於此時項目中註解了 @HystrixCommand 的方法尚未執行,所以也沒有任何的監控數據

  > 訪問 http://localhost:8010/user/1 後,再次訪問 http://localhost:8010/hystrix.stream,可看到頁面會從新出現相似於下面的內容。

    由於系統會不斷地刷新以得到實時的監控數據。Hystrix的監控指標很是全面,例如HystrixCommand的名稱、group名稱、

    斷路器狀態、錯誤率、錯誤數等。

3. Feign項目的Hystrix監控

  啓動前文的microservice-consumer-movie-feign-hystrix-fallback項目,並使用相似的方式測試,而後訪問 http://localhost:8010/hystrix.stream,

發現返回的是404。這是爲何呢?查看項目的依賴樹發現,項目中並無hystrix-metrics-event-stream的依賴。

  解決方案以下:

  > 1. 複製項目 microservice-consumer-movie-feign-hystrix-fallback,將ArtifactId修改成 microservice-consumer-movie-feign-hystrix-fallback-stream.

  > 2. 爲項目添加依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

  > 3. 在啓動類上添加 @EnableCircuitBreaker ,這樣就使用/hystrix.stream端點監控Hystrix了。

4. 總結

  本文講了Hystrix的監控,可是訪問/hystrix.stream端點得到的數據是以文字形式展現的。很難經過這些數據,一眼看出系統當前的運行狀態。

  下文將講解可視化監控數據。敬請期待~~~

5. 參考

  周立 --- 《Spring Cloud與Docker微服務架構與實戰》

相關文章
相關標籤/搜索