Spring Cloud中Hystrix儀表盤與Turbine集羣監控

Hystrix儀表盤,就像汽車的儀表盤實時顯示汽車的各項數據同樣,Hystrix儀表盤主要用來監控Hystrix的實時運行狀態,經過它咱們能夠看到Hystrix的各項指標信息,從而快速發現系統中存在的問題進而解決它,OK,本文咱們就來看看Hystrix儀表盤要怎麼使用。spring

本文是Spring Cloud系列的第十五篇文章,瞭解前十四篇文章內容有助於更好的理解本文:express

1.使用Spring Cloud搭建服務註冊中心 
2.使用Spring Cloud搭建高可用服務註冊中心 
3.Spring Cloud中服務的發現與消費 
4.Eureka中的核心概念 
5.什麼是客戶端負載均衡 
6.Spring RestTemplate中幾種常見的請求方式 
7.RestTemplate的逆襲之路,從發送請求到負載均衡 
8.Spring Cloud中負載均衡器概覽 
9.Spring Cloud中的負載均衡策略 
10.Spring Cloud中的斷路器Hystrix 
11.Spring Cloud自定義Hystrix請求命令 
12.Spring Cloud中Hystrix的服務降級與異常處理 
13.Spring Cloud中Hystrix的請求緩存 
14.Spring Cloud中Hystrix的請求合併json

本文咱們將從兩個方面來看Hystrix儀表盤的使用,一方面是監控單體應用,另外一方面則整合Turbine,對集羣進行監控。本文的案例在上篇文章的基礎上造成,所以整個環境的搭建過程這裏再也不贅述。緩存

監控單體應用app

監控環境搭建負載均衡

無論是監控單體應用仍是Turbine集羣監控,咱們都須要一個Hystrix Dashboard,固然咱們能夠在要監控的單體應用上繼續添加功能,讓它也具有儀表盤的功能,可是這樣並不符合咱們微服務的思想,因此,Hystrix儀表盤我仍是單首創建一個新的工程專門用來作Hystrix Dashboard。OK,在Spring Cloud中建立一個Hystrix Dashboard很是簡單,以下:ide

第一步:建立一個普通的Spring Boot工程spring-boot

建立一個Spring Boot工程這個比較簡單,直接建立一個名爲hystrix-dashboard的Spring Boot工程。微服務

第二步:添加相關依賴ui

Spring Boot工程建立好以後,修改pom.xml文件,添加相關依賴,以下:

<parent>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-parent</artifactId>
    <version>Dalston.SR3</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>

依賴這裏,咱們主要修改一下parent的內容,而後添加三個依賴,注意不要有遺漏哦。

第三步:入口類上添加註解

添加好依賴以後,在入口類上添加@EnableHystrixDashboard註解,表示開啓儀表盤功能,以下:

@SpringBootApplication
@EnableHystrixDashboard
public class HystrixDashboardApplication {

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

第四步:屬性配置

最後,咱們能夠根據我的偏好來配置一下application.properties文件,我這裏配置兩個基本的屬性,以下:

spring.application.name=hystrix-dashboard
server.port=2001
1
2
OK,作完這些以後,咱們的監控環境基本上就搭建成功了。

運行效果

環境搭建成功以後,運行這個Spring Boot工程,咱們能夠看到以下頁面:

這裏寫圖片描述

三個參數的含義我已在圖中標註出來了。

OK,如今咱們的儀表盤工程已經建立成功了,可是還不能用來監控某一個服務,要監控某一個服務,須要該服務提供一個/hystrix.stream接口,so,咱們須要對咱們的服務消費者工程稍加改造。

改造要監控的服務

咱們來改造一下咱們的服務消費者工程,改造方式很簡單,兩個步驟就搞定,首先在pom.xml文件中添加以下依賴:

<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>
1
2
3
4
5
6
7
8
而後在服務消費者工程的入口類上添加@EnableCircuitBreaker註解,表示開啓斷路器功能。此時,咱們再來啓動咱們的eureka-server、provider、和consumer工程,在consumer工程的啓動日誌中,咱們能夠看到以下信息:

這裏寫圖片描述

這個信息代表咱們的consumer工程目前已經具有了/hystrix.stream接口,咱們能夠直接訪問這個接口了。可是這裏有一個細節須要小夥伴們注意:要訪問/hystrix.stream接口,得先訪問consumer工程中的任意一個其餘接口,不然若是直接訪問/hystrix.stream接口的話,會打印出一連串的ping: ping: …。 OK,我先訪問consumer中的任意一個其餘接口,而後在訪問/hystrix.stream接口,訪問地址以下:http://localhost:9000/ www.tianhengyl1.com hystrix.stream,訪問結果以下:

這裏寫圖片描述

咱們看到返回結果是一段json數據,單純的查看json數據,咱們很難分析出結果,因此,咱們要在Hystrix儀表盤中來查看這一段json,在hystrix儀表盤中輸入監控地址,以下:

這裏寫圖片描述

而後點擊Monitor Stream按鈕,咱們就能夠看到監控畫面了,以下: 
這裏寫圖片描述

參數詳解

OK,儀表盤已經顯示出來了,那麼儀表盤上的各項數據都是什麼意思呢?咱們來看下面一張圖:

這裏寫圖片描述

Turbine集羣監控

OK,上文咱們看了一個監控單體應用的例子,在實際應用中,咱們要監控的應用每每是一個集羣,這個時候咱們就得采起Turbine集羣監控了。Turbine有一個重要的功能就是匯聚監控信息,並將匯聚到的監控信息提供給Hystrix Dashboard來集中展現和監控。那咱們就來看看Turbine集羣監控如何使用。

搭建監控環境

監控環境的搭建也是分爲四個步驟:

第一步:建立一個普通的Spring Boot工程

第一步建立一個名叫turbine的普通Spring Boot工程。

第二步:添加依賴

工程建立完成以後,咱們須要添加一個依賴,以下:

<parent>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-parent</artifactId>
    <version>Dalston.SR3</version>
    <relativePath/> 
</parent>
<dependencies>
    <!-- 其餘默認的依賴 -->
    <!-- 咱們要添加的依賴 -->
    <dependency>
        <groupId>org.www.lgzxyl.com springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-turbine</artifactId>
    </dependency www.hnktv.cn>
</dependencies>
第三步:添加註解

在入口類上添加@EnableTurbine註解表示開啓Turbine,以下:

@SpringBootApplication
@EnableDiscoveryClient
@EnableTurbine
public class TurbineApplication {

    public static void main(String[] args) {
        SpringApplication.run(TurbineApplication.class, args);
    }
}
1
2
3
4
5
6
7
8
9
第四步:修改配置

在application.properties配置文件中加入eureka和turbine的相關配置,以下:

spring.application.name=turbine
server.port=2002
management.port=2003
eureka.client.service-url.defaultZone=http:/www.zzktv.cn/ localhost:1111/eureka/
turbine.app-config=ribbon-consumer
turbine.cluster-name-expression="default"
turbine.combine-host-port=true
1
2
3
4
5
6
7
關於這個配置文件,我說以下幾點:

1.turbine.app-config=ribbon-consumer指定了要監控的應用名字爲ribbon-consumer 
2.turbine.cluster-name-expression=」default」,表示集羣的名字爲default 
3.turbine.www.yunduanpingtai.cn  combine-host-port=true表示同一主機上的服務經過host和port的組合來進行區分,默認狀況下是使用host來區分,這樣會使本地調試有問題
查看監控圖

OK,監控服務建立成功以後,咱們再次依次啓動eureka-server、provider和consumer,其中consumer啓動兩個實例,兩個實例的端口不一致,再分別啓動hystrix-dashboard和turbine,而後在hystrix監控地址欄輸入以下地址(監控以前要記得先訪問一下服務中的任意一個接口):http://localhost:2002/turbine.stream,訪問結果以下:

這裏寫圖片描述

小夥伴們能夠看到,集羣下的主機報告一欄顯示已經有所不一樣了。

相關文章
相關標籤/搜索