Spring Cloud構建微服務架構:Hystrix監(jiān)控面板【Dalston版】

在上一篇《服務容錯保護(hystrix斷路器)》的介紹中哩都,我們提到斷路器是根據一段時間窗內的請求情況來判斷并操作斷路器的打開和關閉狀態(tài)的猴凹。而這些請求情況的指標信息都是HystrixCommand和HystrixObservableCommand實例在執(zhí)行過程中記錄的重要度量信息啃奴,它們除了Hystrix斷路器實現中使用之外淆衷,對于系統運維也有非常大的幫助调煎。這些指標信息會以“滾動時間窗”與“桶”結合的方式進行匯總五慈,并在內存中駐留一段時間,以供內部或外部進行查詢使用淘讥,Hystrix Dashboard就是這些指標內容的消費者之一圃伶。

下面我們基于之前的示例來結合Hystrix Dashboard實現Hystrix指標數據的可視化面板蚁袭,這里我們將用到下之前實現的幾個應用了牛,包括:

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

由于eureka-consumer-ribbon-hystrix項目中的/consumer接口實現使用了@HystrixCommand修飾,所以這個接口的調用情況會被Hystrix記錄下來腋粥,以用來給斷路器和Hystrix Dashboard使用蝗岖。斷路器我們在上一篇中已經介紹過了炼邀,下面我們來具體說說Hystrix Dashboard的構建。

動手試一試

在Spring Cloud中構建一個Hystrix Dashboard非常簡單剪侮,只需要下面四步:

  • 創(chuàng)建一個標準的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的監(jiān)控首頁绪爸,該頁面中并沒有具體的監(jiān)控信息湾碎。從頁面的文字內容中我們可以知道,Hystrix Dashboard共支持三種不同的監(jiān)控方式奠货,依次為:

  • 默認的集群監(jiān)控:通過URLhttp://turbine-hostname:port/turbine.stream開啟介褥,實現對默認集群的監(jiān)控。
  • 指定的集群監(jiān)控:通過URLhttp://turbine-hostname:port/turbine.stream?cluster=[clusterName]開啟递惋,實現對clusterName集群的監(jiān)控柔滔。
  • 單體應用的監(jiān)控:通過URLhttp://hystrix-app:port/hystrix.stream開啟,實現對具體某個服務實例的監(jiān)控萍虽。

前兩者都對集群的監(jiān)控睛廊,需要整合Turbine才能實現,這部分內容我們將在下一篇中做詳細介紹杉编。在本節(jié)中超全,我們主要實現對單個服務實例的監(jiān)控咆霜,所以這里我們先來實現單個服務實例的監(jiān)控。

既然Hystrix Dashboard監(jiān)控單實例節(jié)點需要通過訪問實例的/hystrix.stream接口來實現卵迂,自然我們需要為服務實例添加這個端點,而添加該功能的步驟也同樣簡單绒净,只需要下面兩步:

  • 在服務實例pom.xml中的dependencies節(jié)點中新增spring-boot-starter-actuator監(jiān)控模塊以開啟監(jiān)控相關的端點见咒,并確保已經引入斷路器的依賴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”的監(jiān)控缤言,點擊“Monitor Stream”按鈕宝当,此時我們可以看到如下頁面:

在對該頁面介紹前,我們先看看在首頁中我們還沒有介紹的兩外兩個參數:

  • Delay:該參數用來控制服務器上輪詢監(jiān)控信息的延遲時間胆萧,默認為2000毫秒庆揩,我們可以通過配置該屬性來降低客戶端的網絡和CPU消耗。
  • Title:該參數對應了上圖頭部標題Hystrix Stream之后的內容跌穗,默認會使用具體監(jiān)控實例的URL订晌,我們可以通過配置該信息來展示更合適的標題。

回到監(jiān)控頁面蚌吸,我們來詳細說說其中各元素的具體含義:

  • 我們可以在監(jiān)控信息的左上部分找到兩個重要的圖形信息:一個實心圓和一條曲線锈拨。
    • 實心圓:共有兩種含義。它通過顏色的變化代表了實例的健康程度羹唠,如下圖所示奕枢,它的健康度從綠色、黃色佩微、橙色缝彬、紅色遞減。該實心圓除了顏色的變化之外哺眯,它的大小也會根據實例的請求流量發(fā)生變化跌造,流量越大該實心圓就越大。所以通過該實心圓的展示族购,我們就可以在大量的實例中快速的發(fā)現故障實例和高壓力實例壳贪。


    • 曲線:用來記錄2分鐘內流量的相對變化,我們可以通過它來觀察到流量的上升和下降趨勢寝杖。
  • 其他一些數量指標如下圖所示:


更多Spring Cloud內容請持續(xù)關注我的博客更新或在《Spring Cloud微服務實戰(zhàn)》中獲取违施。

代碼示例

樣例工程將沿用之前在碼云和GitHub上創(chuàng)建的SpringCloud-Learning項目,重新做了一下整理瑟幕。通過不同目錄來區(qū)分Brixton和Dalston的示例磕蒲。

相關閱讀

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辣往,隨后出現的幾起案子兔院,更是在濱河造成了極大的恐慌,老刑警劉巖站削,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坊萝,死亡現場離奇詭異,居然都是意外死亡许起,警方通過查閱死者的電腦和手機十偶,發(fā)現死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來园细,“玉大人惦积,你說我怎么就攤上這事∶推担” “怎么了狮崩?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鹿寻。 經常有香客問我厉亏,道長,這世上最難降的妖魔是什么烈和? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任爱只,我火速辦了婚禮,結果婚禮上招刹,老公的妹妹穿的比我還像新娘恬试。我一直安慰自己,他們只是感情好疯暑,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布训柴。 她就那樣靜靜地躺著,像睡著了一般妇拯。 火紅的嫁衣襯著肌膚如雪幻馁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天越锈,我揣著相機與錄音仗嗦,去河邊找鬼。 笑死甘凭,一個胖子當著我的面吹牛稀拐,可吹牛的內容都是我干的。 我是一名探鬼主播丹弱,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼德撬,長吁一口氣:“原來是場噩夢啊……” “哼铲咨!你這毒婦竟也來了?” 一聲冷哼從身側響起蜓洪,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤纤勒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后隆檀,有當地人在樹林里發(fā)現了一具尸體摇天,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年刚操,在試婚紗的時候發(fā)現自己被綠了闸翅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片再芋。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡菊霜,死狀恐怖,靈堂內的尸體忽然破棺而出济赎,到底是詐尸還是另有隱情鉴逞,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布司训,位于F島的核電站构捡,受9級特大地震影響,放射性物質發(fā)生泄漏壳猜。R本人自食惡果不足惜勾徽,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望统扳。 院中可真熱鬧喘帚,春花似錦、人聲如沸咒钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朱嘴。三九已至倾鲫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萍嬉,已是汗流浹背乌昔。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留壤追,地道東北人玫荣。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像大诸,于是被迫代替她去往敵國和親捅厂。 傳聞我的和親對象是個殘疾皇子贯卦,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容