個人博客:蘭陵笑笑生,歡迎瀏覽博客!java
上一章 SpringCloud基礎教程(八)-Hystrix熔斷器(上)當中,咱們介紹了Hystrix在分佈式環境下,如何經過熔斷、降級的方式解決了服務延遲或者故障出現的問題,本章咱們將深刻了解Hystrix的服務監控。程序員
當服務端由於網絡延遲或故障出險問題時,咱們能夠經過Hystrix實現服務熔斷,那麼如何作到迅速的發現問題而且迅速的解決問題呢?熔斷的監控工具備2款工具:Hystrix-dashboard和Turbine,Hystrix-dashboard是針對Hystrix進行實時的監控工具,經過Hystrix-dashboard咱們能夠直觀的看到單個應用的服務信息。可是,在分佈式的模式下,咱們須要一個可以彙總全部的服務數據並直觀的顯示出來,這個工具就是Turbine。web
咱們在 SpringCloud 基礎教程(三)-Eureka 進階 中提到了 Eureka是默認使用心跳機制來監測服務的健康與否的,咱們經過在服務端引入actuator依賴,並修改yml配置,開啓健康檢查,可以查到服務是否正常,這裏在須要被監測的服務組件中,開啓監控也須要引入actuator:spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
application.yml添加配置,默認只有"health","info",這裏咱們添加"hystrix.stream"express
management: endpoints: web: exposure: include: ["health","info","hystrix.stream"]
啓動被監測的項目後,這裏我啓動了server-consumer服務消費者,actuator爲hystrix提供了管理接口,咱們經過http://localhost:5168/actuator/hystrix.stream (當前版本是2.x版本,若是是1.x版本,請求的接口就是/hystrix.stream ),就能夠看到頁面在動態的、實時的刷新,監控一些參數:網絡
在被檢測的項目中引入actuator就能夠經過接口的方式收集Hystrix Command標註的資源接口參數信息,咱們還能夠經過直觀的方式,使用Hystrix-dashboard儀表盤的方式展現:app
首先,新建儀表盤應用Monitor,建立Maven項目,引入hystrix-dashboard依賴:負載均衡
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>
在主類上添加@EnableHystrixDashboard註解,表示開啓儀表盤:分佈式
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; @SpringBootApplication @EnableHystrixDashboard public class MonitorApplication { public static void main(String[] args) { SpringApplication.run(MonitorApplication.class, args); } }
配置文件中指定端口爲8412,啓動項目後,能夠經過http://localhost:8412/hystrix訪問儀表盤的頁面:spring-boot
控制主頁面,咱們能夠輸入指定服務的接口,刷新時間,默認是2秒就能夠顯示指定服務的監控數據了,好比咱們能夠輸入server-consumer服務消費者的url http://localhost:5168/actuator/hystrix.stream ,就能夠實時的顯示如下的信息:
具體的信息,包括了成功數量、熔斷數量,錯誤數量,錯誤的百分比等等信息:
在實際的企業開發中,服務的實例不知一個,這個時候就須要將全部服務的監控信息聚合到一個面板上,咱們可使用Turbine。
在上文Monitor儀表盤項目中,咱們繼續引入turbine依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> </dependency>
並在主類上添加@EnableTurbine註解:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; import org.springframework.cloud.netflix.turbine.EnableTurbine; @SpringBootApplication @EnableHystrixDashboard @EnableTurbine public class MonitorApplication { public static void main(String[] args) { SpringApplication.run(MonitorApplication.class, args); } }
配置儀表盤的應用添加配置application.yml,並添加Eureka配置,這樣能夠從Eureka中心經過服務名稱獲取服務實例信息:
eureka: instance: hostname: eureka7001.com instance-id: monitor prefer-ip-address: true #eureka服務端的實例名稱 client: service-url: # 與註冊中心交互的url defaultZone: http://eureka7001.com:7001/eureka/ enabled: true turbine: aggregator: #集羣的名稱,能夠多個 cluster-config: MAIN #監控服務的名稱,能夠有多個 app-config: server-consumer cluster-name-expression: metadata['cluster']
一樣,咱們在被監控的服務server-consumer的配置中,須要配置和Monitor項目的配置同樣:、
eureka: instance: metadata-map: cluster: MAIN
咱們啓動1個Eureka,2個服務server-consumer,1個Monitor儀表盤項目,接下來就直接在Hystrix的儀表盤頁面輸入:
http://localhost:8412/turbine.stream?cluster=MAIN
咱們就能夠看到數據都被彙集到一塊兒了,Hosts爲2表示有2個實例:
這樣既能夠看到聚合以後的監控圖形化信息了。
本章在上一章的基礎之上,詳細的介紹了Hystrix熔斷的監控,以示例的方式展現了單個服務的監控和多個服務的聚合監控。在實際的企業應用中,咱們可以經過這樣的方式及時的掌握每一個服務的健康情況。這是很是有必要和實用的。
以上就是本期的分享,你能夠關注本博客的#Spring Cloud基礎教程!#。 還能夠關注公衆號: 程序員笑笑生,關注更多精彩內容!
以就是本期的分享,你還能夠關注公衆號:** 程序員笑笑生**,關注更多精彩內容!
SpringCloud基礎教程(一)-微服務與SpringCloud
SpringCloud基礎教程(二)-服務發現 Eureka
SpringCloud基礎教程(五)-配置中心熱生效和高可用
SpringCloud 基礎教程(六)-負載均衡Ribbon
SpringCloud 基礎教程(七)-Feign聲明式服務調用
SpringCloud 基礎教程(八)-Hystrix熔斷器(上)
更多精彩內容,請期待...
本文由博客一文多發平臺 OpenWrite 發佈!
個人博客地址蘭陵笑笑生,歡迎瀏覽!