Hystrix Dashboard:斷路器執行監控

SpringBoot實戰電商項目mall(20k+star)地址:github.com/macrozheng/…java

摘要

Hystrix Dashboard 是Spring Cloud中查看Hystrix實例執行狀況的一種儀表盤組件,支持查看單個實例和查看集羣實例,本文將對其用法進行詳細介紹。git

簡介

Hystrix提供了Hystrix Dashboard來實時監控HystrixCommand方法的執行狀況。 Hystrix Dashboard能夠有效地反映出每一個Hystrix實例的運行狀況,幫助咱們快速發現系統中的問題,從而採起對應措施。github

Hystrix 單個實例監控

咱們先經過使用Hystrix Dashboard監控單個Hystrix實例來了解下它的使用方法。web

建立一個hystrix-dashboard模塊

用來監控hystrix實例的執行狀況。spring

  • 在pom.xml中添加相關依賴:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
複製代碼
  • 在application.yml進行配置:
server:
 port: 8501
spring:
 application:
 name: hystrix-dashboard
eureka:
 client:
 register-with-eureka: true
 fetch-registry: true
 service-url:
 defaultZone: http://localhost:8001/eureka/
複製代碼
  • 在啓動類上添加@EnableHystrixDashboard來啓用監控功能:
@EnableHystrixDashboard
@EnableDiscoveryClient
@SpringBootApplication
public class HystrixDashboardApplication {

    public static void main(String[] args) {
        SpringApplication.run(HystrixDashboardApplication.class, args);
    }

}
複製代碼

啓動相關服務

此次咱們須要啓動以下服務:eureka-server、user-service、hystrix-service、hystrix-dashboard,啓動後註冊中心顯示以下。express

Hystrix實例監控演示

  • 填寫好信息後點擊監控按鈕,這裏咱們須要注意的是,因爲咱們本地不支持https,因此咱們的地址須要填入的是http,不然會沒法獲取監控信息;

  • 還有一點值得注意的是,被監控的hystrix-service服務須要開啓Actuator的hystrix.stream端點,配置信息以下:
management:
 endpoints:
 web:
 exposure:
 include: 'hystrix.stream' #暴露hystrix監控端點
複製代碼

  • 能夠發現曾經咱們在@HystrixCommand中添加的commandKey和threadPoolKey屬性都顯示在上面了,而且有7次調用都成功了。

Hystrix Dashboard 圖表解讀

圖表解讀以下,須要注意的是,小球表明該實例健康狀態及流量狀況,顏色越顯眼,表示實例越不健康,小球越大,表示實例流量越大。曲線表示Hystrix實例的實時流量變化。app

Hystrix 集羣實例監控

這裏咱們使用Turbine來聚合hystrix-service服務的監控信息,而後咱們的hystrix-dashboard服務就能夠從Turbine獲取聚合好的監控信息展現給咱們了。spring-boot

建立一個turbine-service模塊

用來聚合hystrix-service的監控信息。學習

  • 在pom.xml中添加相關依賴:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
複製代碼
  • 在application.yml進行配置,主要是添加了Turbine相關配置:
server:
 port: 8601
spring:
 application:
 name: turbine-service
eureka:
 client:
 register-with-eureka: true
 fetch-registry: true
 service-url:
 defaultZone: http://localhost:8001/eureka/
turbine:
 app-config: hystrix-service #指定須要收集信息的服務名稱
 cluster-name-expression: new String('default') #指定服務所屬集羣
 combine-host-port: true #以主機名和端口號來區分服務
複製代碼
  • 在啓動類上添加@EnableTurbine來啓用Turbine相關功能:
@EnableTurbine
@EnableDiscoveryClient
@SpringBootApplication
public class TurbineServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(TurbineServiceApplication.class, args);
    }

}
複製代碼

啓動相關服務

使用application-replica1.yml配置再啓動一個hystrix-service服務,啓動turbine-service服務,此時註冊中心顯示以下。測試

Hystrix集羣監控演示

  • 訪問Hystrix Dashboard:http://localhost:8501/hystrix

  • 添加集羣監控地址,須要注意的是咱們須要添加的是turbine-service的監控端點地址:

  • 能夠看到咱們的Hystrix實例數量變成了兩個。

使用到的模塊

springcloud-learning
├── eureka-server -- eureka註冊中心
├── user-service -- 提供User對象CRUD接口的服務
├── hystrix-service -- hystrix服務調用測試服務
├── turbine-service -- 聚合收集hystrix實例監控信息的服務
└── hystrix-dashboard -- 展現hystrix實例監控信息的儀表盤
複製代碼

項目源碼地址

github.com/macrozheng/…

公衆號

mall項目全套學習教程連載中,關注公衆號第一時間獲取。

公衆號圖片
相關文章
相關標籤/搜索