Spring Cloud架構教程 (一)Hystrix監控面板

下面咱們基於以前的示例來結合Hystrix Dashboard實現Hystrix指標數據的可視化面板,這裏咱們將用到下以前實現的幾個應用,包括:html

  • eureka-server:服務註冊中心
  • eureka-client:服務提供者
  • eureka-consumer-ribbon-hystrix:使用ribbon和hystrix實現的服務消費者

因爲eureka-consumer-ribbon-hystrix項目中的/consumer接口實現使用了@HystrixCommand修飾,因此這個接口的調用狀況會被Hystrix記錄下來,以用來給斷路器和Hystrix Dashboard使用。斷路器咱們在上一篇中已經介紹過了,下面咱們來具體說說Hystrix Dashboard的構建。spring

動手試一試

在Spring Cloud中構建一個Hystrix Dashboard很是簡單,只須要下面四步:服務器

  • 建立一個標準的Spring Boot工程,命名爲:hystrix-dashboard。
  • 編輯pom.xml,具體依賴內容以下:
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Dalston.SR1</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
  • 爲應用主類加上@EnableHystrixDashboard,啓用Hystrix Dashboard功能。
@EnableHystrixDashboard
@SpringCloudApplication
public class HystrixDashboardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboardApplication.class, args);
}
}
  • 根據實際狀況修改application.properties配置文件,好比:選擇一個未被佔用的端口等,此步非必須。
spring.application.name=hystrix-dashboard
server.port=1301

到這裏咱們已經完成了基本配置,接下來咱們能夠啓動該應用,並訪問:http://localhost:1301/hystrix,咱們能夠看到以下頁面:網絡

這是Hystrix Dashboard的監控首頁,該頁面中並無具體的監控信息。從頁面的文字內容中咱們能夠知道,Hystrix Dashboard共支持三種不一樣的監控方式,依次爲:app

  • 默認的集羣監控:經過URLhttp://turbine-hostname:port/turbine.stream開啓,實現對默認集羣的監控。
  • 指定的集羣監控:經過URLhttp://turbine-hostname:port/turbine.stream?cluster=[clusterName]開啓,實現對clusterName集羣的監控。
  • 單體應用的監控:經過URLhttp://hystrix-app:port/hystrix.stream開啓,實現對具體某個服務實例的監控。

前二者都對集羣的監控,須要整合Turbine才能實現,這部份內容咱們將在下一篇中作詳細介紹。在本節中,咱們主要實現對單個服務實例的監控,因此這裏咱們先來實現單個服務實例的監控。spring-boot

既然Hystrix Dashboard監控單實例節點須要經過訪問實例的/hystrix.stream接口來實現,天然咱們須要爲服務實例添加這個端點,而添加該功能的步驟也一樣簡單,只須要下面兩步:post

  • 在服務實例pom.xml中的dependencies節點中新增spring-boot-starter-actuator監控模塊以開啓監控相關的端點,並確保已經引入斷路器的依賴spring-cloud-starter-hystrix
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 確保在服務實例的主類中已經使用@EnableCircuitBreaker@EnableHystrix註解,開啓了斷路器功能。

到這裏已經完成了全部的配置,咱們能夠在Hystrix Dashboard的首頁輸入http://localhost:2101/hystrix.stream,已啓動對「eureka-consumer-ribbon-hystrix」的監控,點擊「Monitor Stream」按鈕,此時咱們能夠看到以下頁面:ui

在對該頁面介紹前,咱們先看看在首頁中咱們尚未介紹的兩外兩個參數:spa

  • Delay:該參數用來控制服務器上輪詢監控信息的延遲時間,默認爲2000毫秒,咱們能夠經過配置該屬性來下降客戶端的網絡和CPU消耗。
  • Title:該參數對應了上圖頭部標題Hystrix Stream以後的內容,默認會使用具體監控實例的URL,咱們能夠經過配置該信息來展現更合適的標題。源碼來源
相關文章
相關標籤/搜索