SpringCloud 基礎教程(九)-Hystrix服務監控(下)

  個人博客:蘭陵笑笑生,歡迎瀏覽博客!java

 上一章 SpringCloud基礎教程(八)-Hystrix熔斷器(上)當中,咱們介紹了Hystrix在分佈式環境下,如何經過熔斷、降級的方式解決了服務延遲或者故障出現的問題,本章咱們將深刻了解Hystrix的服務監控。程序員

前言

 當服務端由於網絡延遲或故障出險問題時,咱們能夠經過Hystrix實現服務熔斷,那麼如何作到迅速的發現問題而且迅速的解決問題呢?熔斷的監控工具備2款工具:Hystrix-dashboard和Turbine,Hystrix-dashboard是針對Hystrix進行實時的監控工具,經過Hystrix-dashboard咱們能夠直觀的看到單個應用的服務信息。可是,在分佈式的模式下,咱們須要一個可以彙總全部的服務數據並直觀的顯示出來,這個工具就是Turbine。web

1、健康檢查

 咱們在 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 ),就能夠看到頁面在動態的、實時的刷新,監控一些參數:網絡

file

二 、監控面板

 在被檢測的項目中引入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

file

 控制主頁面,咱們能夠輸入指定服務的接口,刷新時間,默認是2秒就能夠顯示指定服務的監控數據了,好比咱們能夠輸入server-consumer服務消費者的url http://localhost:5168/actuator/hystrix.stream ,就能夠實時的顯示如下的信息:

file

具體的信息,包括了成功數量、熔斷數量,錯誤數量,錯誤的百分比等等信息:

file

三 、聚合監控Turbine

 在實際的企業開發中,服務的實例不知一個,這個時候就須要將全部服務的監控信息聚合到一個面板上,咱們可使用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個實例:

file

這樣既能夠看到聚合以後的監控圖形化信息了。

4、總結

 本章在上一章的基礎之上,詳細的介紹了Hystrix熔斷的監控,以示例的方式展現了單個服務的監控和多個服務的聚合監控。在實際的企業應用中,咱們可以經過這樣的方式及時的掌握每一個服務的健康情況。這是很是有必要和實用的。

 以上就是本期的分享,你能夠關注本博客的#Spring Cloud基礎教程!#。 還能夠關注公衆號: 程序員笑笑生,關注更多精彩內容!

以就是本期的分享,你還能夠關注公衆號:** 程序員笑笑生**,關注更多精彩內容!

file

file

SpringCloud基礎教程(一)-微服務與SpringCloud

SpringCloud基礎教程(二)-服務發現 Eureka

SpringCloud基礎教程(三)-Eureka進階

SpringCloud 基礎教程(四)-配置中心入門

SpringCloud基礎教程(五)-配置中心熱生效和高可用

SpringCloud 基礎教程(六)-負載均衡Ribbon

SpringCloud 基礎教程(七)-Feign聲明式服務調用

SpringCloud 基礎教程(八)-Hystrix熔斷器(上)

更多精彩內容,請期待...

本文由博客一文多發平臺 OpenWrite 發佈!

個人博客地址蘭陵笑笑生,歡迎瀏覽!

相關文章
相關標籤/搜索