上一篇咱們介紹了Hystrix的基礎使用,咱們能夠經過Hystrix作到依賴隔離和熔斷等操做。可是隻有工具的使用而沒有監控,咱們就沒法在第一時間發現出現問題的依賴,也不能判斷服務總體的健康狀態/運行狀態。因此咱們還要作好相關的監控工做。java
Hystrix提供了監控頁面,本篇主要介紹如何使用Hystrix Dashboard對服務的容錯狀況進行監控。git
框架 | 版本 |
---|---|
Spring Boot | 2.0.0.RELEASE |
Spring Cloud | Finchley.BUILD-SNAPSHOT |
JDK | 1.8.x |
參考:https://ken.io/note/spring-cloud-feign-quickstart
源碼:https://github.com/ken-io/springcloud-course/tree/master/chapter-03/github
啓動Eureka Server: http://localhost:8800
啓動Test Service:http://localhost:8602web
基於上一篇Feign+Hystrix:https://ken.io/note/spring-cloud-hystrix-quickstart
源碼(feignclient):https://github.com/ken-io/springcloud-course/tree/master/chapter-04/feignclientspring
基於feignclient項目使用Hystrix Dashboardapp
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>
修改App.java,增長 @EnableHystrixDashboard
註解框架
package io.ken.springcloud.feignclient; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; import org.springframework.cloud.openfeign.EnableFeignClients; @EnableHystrixDashboard @EnableFeignClients @EnableDiscoveryClient @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
新建package:configuration,而後在此package下建立HystrixConfiguration.java並添加hystrixRegistrationBeanspring-boot
package io.ken.springcloud.feignclient.configuration; import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class HystrixConfiguration { @Bean(name = "hystrixRegistrationBean") public ServletRegistrationBean servletRegistrationBean() { ServletRegistrationBean registration = new ServletRegistrationBean( new HystrixMetricsStreamServlet(), "/hystrix.stream"); registration.setName("hystrixServlet"); registration.setLoadOnStartup(1); return registration; } }
feignclient項目啓動後,訪問 http://localhost:8605/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,查看具體某個服務實例的監控信息。
咱們先經過Hystrix Dashboard看一下單個實例的監控信息
輸入指定鏈接:http://localhost:8605/hystrix.stream
Delay(查詢監控信息的延遲時間),Tile能夠自定義,也能夠默認。填寫完畢點擊 Monitor Stream
便可
此時Hystrix監控面板會顯示Loanding…,這是由於咱們還沒經過feignclient訪問外部接口,也就還沒生成stream信息。
咱們經過feignclient訪問幾個外部接口,stream信息生成後,監控面板會自動刷新。
在訪問了 http://localhost:8605/ti ,http://localhost:8605/plus?numa=1&numb=2
這兩個接口後,監控信息就天然刷新了。不一樣的接口默認會分開來記錄。
監控圖中用圓點來表示服務的健康狀態,健康度從100%-0%分別會用綠色、黃色、橙色、紅色來表示。
另外,這個圓點也會隨着流量的增多而變大。
監控圖中會用曲線(圓點旁邊)來表示服務的流量狀況,經過這個曲線能夠觀察單個接口的流量變化/趨勢
上個圖中是個很是小的綠色圓心,流量曲線也是個折現,是由於 ken.io 這裏訪問兩個接口次數不多。
若是分別狂按F5快速訪問這兩個接口。這個圓心和曲線就會發生變化。
這時候這個圓點比着上一張圖已經變大了,服務依舊是健康狀態,因此圓點仍是綠色。
另外流量曲線隨着剛纔的快速刷新訪問也升了上去。
爲了更好的展現服務不一樣健康狀態下面板的變化,咱們快速訪問 http://localhost:8605/ti , http://localhost:8605/plus?numa=1&numb=2,而後關閉testservice,快速的訪問 http://localhost:8605/plus?numa=1&numb=2 ,這首的面板會更豐富。
這時候TestService#plusService的圓點就變成了紅色。因爲停用testservice後咱們沒有訪問 http://localhost:8605/ti ,因此這個時間點TestService#plusService的圓點仍是綠色,尺寸也更小。兩個Service的流量曲線變化也跟咱們的操做相吻合。
上圖是Hystrix Dashboard監控圖表中各項指標的說明