1. 程式人生 > >Hystrix DashBoard監控面板【Finchley 版】

Hystrix DashBoard監控面板【Finchley 版】

轉載:[https://windmt.com/2018/04/16/spring-cloud-5-hystrix-dashboard/]

一、專案建立

1、建立Spring Boot 工程,命名為:hystrix-dashboard,引入如下依賴

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

2、在 Spring Boot 的啟動類上面引入註解@EnableHystrixDashboard,啟用 Hystrix Dashboard 功能。

@SpringBootApplication
@EnableHystrixDashboard
public class DeptConsumerHystrixDashboard9001 { public static void main(String[] args){ SpringApplication.run(DeptConsumerHystrixDashboard9001.class, args); } }

3、修改配置檔案 application.yml

server:
  port: 9001
spring:
  application:
    name: hystrix-dashboard

二、頁面介紹

啟動應用,然後再瀏覽器中輸入 http://localhost:9001/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 開啟 ,實現對具體某個服務例項的監控。(現在這裡的 URL 應該為 http://hystrix-app:port/actuator/hystrix.stream,Actuator 2.x 以後endpoints 全部在/actuator下,可以通過management.endpoints.web.base-path修改)。

前兩者都對叢集的監控,需要整合 Turbine 才能實現。這一部分我們先實現對單體應用的監控,這裡的單體應用就用使用 Hystrix 實現的服務提供者——microservicecloud-provider-dept-hystrix-8087。

頁面上的另外兩個引數:

Delay:控制伺服器上輪詢監控資訊的延遲時間,預設為 2000 毫秒,可以通過配置該屬性來降低客戶端的網路和 CPU 消耗。
Title:該引數可以展示合適的標題。

三、為服務microservicecloud-provider-dept-hystrix-8087新增 endpoint

既然 Hystrix Dashboard 監控單例項節點需要通過訪問例項的/actuator/hystrix.stream介面來實現,自然我們需要為服務例項新增這個 endpoint。

1、POM 配置
在服務的pom.xml中的dependencies節點中新增spring-boot-starter-actuator監控模組以開啟監控相關的端點,並確保已經引入斷路器的依賴spring-cloud-starter-netflix-hystrix

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

2、啟動類
為啟動類新增@EnableCircuitBreaker或@EnableHystrix註解,開啟斷路器功能。

@SpringBootApplication
@EnableEurekaClient
//服務發現
@EnableDiscoveryClient
//服務熔斷
@EnableCircuitBreaker
public class DeptProviderApplication8087_hystrix {
    public static void main(String[] args) {
        SpringApplication.run(DeptProviderApplication8087_hystrix.class, args);
    }
}

3、 配置檔案
在配置檔案 application.yml 中新增

management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream

management.endpoints.web.exposure.include這個是用來暴露 endpoints 的。由於 endpoints 中會包含很多敏感資訊,除了 health 和 info 兩個支援 web 訪問外,其他的預設不支援 web 訪問。

測試
在 Hystrix-Dashboard 的主介面上輸入 microservicecloud-provider-dept-hystrix-8087 對應的地址 http://localhost:8087/actuator/hystrix.stream 然後點選 Monitor Stream 按鈕,進入頁面。

如果沒有請求會一直顯示 “Loading…”,這時訪問 http://localhost:8087/actuator/hystrix.stream 也是不斷的顯示 “ping”。

這時候訪問一下 http://localhost:8087/dept/get/1,可以看到 Hystrix Dashboard 中出現了下面的效果
這裡寫圖片描述