白話SpringCloud | 第六章:Hystrix監控皮膚及資料聚合(Turbine)
前面一章,我們講解了如何整合Hystrix
。而在實際情況下,使用了Hystrix
的同時,還會對其進行實時的資料監控,反饋各類指標資料。今天我們就將講解下Hystrix Dashboard
和Turbine
.其中Hystrix Dashboard
是一款針對Hystrix
進行實時監控的工具,通過Hystrix Dashboard
我們可以在直觀地看到各Hystrix Command
的請求響應時間, 請求成功率等資料,監控單個例項內的指標情況。後者Turbine
,能夠將多個例項指標資料進行聚合的工具。
Hystrix-Dashboard
Hystrix-dashboard(儀表盤)
是一款針對Hystrix進行實時監控的工具,通過Hystrix Dashboard
我們可以在直觀地看到各Hystrix Command
的請求響應時間, 請求成功率等資料。
建立一個spring-cloud-hystrix-dashboard
工程。
0.引入POM依賴。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
1.啟動類加入@EnableHystrixDashboard
註解,開啟儀表盤功能。
@SpringBootApplication
@EnableHystrixDashboard
@Slf4j
public class HystrixDashboardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboardApplication.class, args);
log.info("spring-cloud-hystrix-dashboard啟動!");
}
}
2.配置檔案修改下,指定埠和應用名稱。
#應用名稱
spring.application.name=hystrix-dashboard
#埠號
server.port=9696
3.啟動應用,訪問:http://127.0.0.1:9696/hystrix ,就可以看見如下頁面了:
從首頁的監控頁面可以看出,此時尚未配置監控應用。而且,從頁面我們也可以看出,一共有三種資料來源形式,即不同的監控方式:
- 預設的叢集監控:通過URL:http://turbine-hostname:port/turbine.stream 開啟,實現對預設叢集的監控。
- 指定的叢集監控:通過URL:http://turbine-hostname:port/turbine.stream?cluster=[clusterName] 開啟,實現對clusterName叢集的監控。
- 單體應用的監控:通過URL:http://hystrix-app:port/actuator/hystrix.stream 開啟,實現對具體某個服務例項的監控。
注意:2.0
之後,預設的監控端點地址加了上下文路徑actuator
。可通過management.endpoints.web.base-path
屬性進行修改,預設是:actuator
現在,我們改造下spring-cloud-hystrix
專案,開啟端點,同時啟用監控端點hystrix.stream
。
0.引入端點依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
1.配置檔案開啟端點hystrix.stream
。這裡需要注意,2.0
之後,預設只開啟了端點info
、health
。其他的需要通過management.endpoints.web.exposure.include
進行額外配置。
#開啟監控端點
management.endpoints.web.exposure.include=hystrix.stream
現在我們啟動spring-cloud-hystrix
。然後新增:http://127.0.0.1:8038/actuator/hystrix.stream 到儀表盤中。
填寫了標題後,點選按鈕Monitor Stream
,就可以進入監控頁面了。
此時,我們訪問下:http://192.168.2.108:8038/feign 。因為服務spring-cloud-eureka-client
為啟動,所以會觸發熔斷方法,多訪問幾次,再次檢視監控頁面,就可以看見相關資料了。
此時,可以啟動下服務spring-cloud-eureka-client
,然後再次訪問下介面。
不同的顏色對應斷路器監控的百分比
關於監控介面的引數解讀,這裡直接轉至部落格園:一抹書香的圖例,地址:https://www.cnblogs.com/chenweida/p/9025589.html
- 實心圓:它有顏色和大小之分,分別代表例項的監控程度和流量大小。如上圖所示,它的健康度從綠色、黃色、橙色、紅色遞減。通過該實心圓的展示,我們就可以在大量的例項中快速的發現故障例項和高壓力例項。
- 曲線:用來記錄 2 分鐘內流量的相對變化,我們可以通過它來觀察到流量的上升和下降趨勢。
- 其他一些數量指標如下圖所示
Turbine
hystrix
只能實現單個微服務的監控,可是一般專案中是微服務是以叢集的形式搭建,一個一個的監控不現實。而Turbine
的原理是,建立一個turbine
服務,並註冊到eureka
中,並發現eureka
上的hystrix
服務。通過配置turbine
會自動收集所需hystrix
的監控資訊,最後通過dashboard
展現,以達到叢集監控的效果。
簡單來說,就是通過註冊到註冊中心,發現其他服務的hystrix
服務,然後進行聚合資料,最後通過自身的端點輸出到儀表盤上進行個性化展示。這我們就監控一個turbine
應用即可,當有新增的應用加入時,我們只需要配置下turbine
引數即可。
建立spring-cloud-hystrix-turbine
工程。
0.引入POM依賴。
<!-- turbine依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
<!-- eureka client依賴 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
1.啟動類加入註解@EnableTurbine
和@EnableDiscoveryClient
.
/**
* turbine服務示例
* @author oKong
*
*/
@SpringBootApplication
@EnableTurbine
@EnableDiscoveryClient
@Slf4j
public class HystrixTurbineApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixTurbineApplication.class, args);
log.info("spring-cloud-hystrix-turbine啟動!");
}
}
2.配置檔案加入註冊中心及turbine
相關配置資訊。
#應用名稱
spring.application.name=hystrix-tuibine
#埠號
server.port=9698
#指定註冊中心地址
eureka.client.service-url.defaultZone=http://127.0.0.1:1000/eureka
# 啟用ip配置 這樣在註冊中心列表中看見的是以ip+埠呈現的
eureka.instance.prefer-ip-address=true
# 例項名稱 最後呈現地址:ip:2000
eureka.instance.instance-id=${spring.cloud.client.ip-address}:${server.port}
#turbine配置
# 需要監控的應用名稱,預設逗號隔開,內部使用Stringutils.commaDelimitedListToStringArray分割
turbine.app-config=hystrix-example
# 叢集名稱
turbine.cluster-name-expression="default"
# true 同一主機上的服務通過host和port的組合來進行區分,預設為true
# false 時 在本機測試時 監控中host叢集數會為1了 因為本地host是一樣的
turbine.combine-host-port=true
2.修改spring-cloud-hystrix
應用,建立一個application-turbine.properties
配置檔案,裡面就設定一個埠好區別下例項。application-turbine.properties
server.port=8039
2.此時啟動下應用,同時啟動spring-cloud-hystrix
應用,設定不同的spring.profiles.active
值,以此啟動多個例項。在儀表盤應用:http://127.0.0.1:9696/hystrix 中新增:http://127.0.0.1:9698/turbine.stream ,之後點選按鈕:Monitor Stream
,此時介面是loading
狀態。接著多次訪問:http://127.0.0.1:8038/feign?name=oKong ,並可以看見有資料了。
之後,我們接著訪問:http://127.0.0.1:8039/feign?name=oKong ,可以看見Hosts
變成2了。
一點疑問:關於hystrix dashboard
是監控Hystrix Command
的指標情況,當我們監控的方法都一致時,是不是區分不了具體是哪個服務的了?按目前的演示demo中,是沒有看出具體是哪個應用出現了異常。。不知道是不是使用姿勢不對,覺得不應該是這樣的吧。。
加了個配置檔案applicatioon-test
,埠號不一致,建立個新的api介面加上HystrixCommand
,最後出現的圖例確實是按照方法名來的。這應該不是巧合了吧。。
還希望有了解這方面的同學,能答疑解惑下。目前是用pinpoint
了,對這塊不是很熟悉。而且pinpoint
也僅僅是監控了下,具體深入尚未了解。。路漫漫其修遠兮呀!
參考資料
總結
本章節主要是對
Hystrix
資料進行實時監控進行了講解,介紹了單體應用和叢集應用的監控示例。這塊也只是簡單的使用,未進行深入瞭解過,看官網收集監控資料還可以使用訊息代理
的方式進行收集,目前預設是使用HTTP
的協議進行收集的,有興趣的同學可以自行試試,這和後面會講解的zikpin
微服務跟蹤是類似的,後者也可以使用訊息代理
進行非同步
資料收集,可以提供效能。
最後
目前網際網路上大佬都有分享
SpringCloud
系列教程,內容可能會類似,望多多包涵了。原創不易,碼字不易,還希望大家多多支援。若文中有錯誤之處,還望提出,謝謝。
相關文章
- SpringCloud之斷路器聚合監控(Hystrix Turbine)SpringGCCloud
- springcloud(五):熔斷監控Hystrix Dashboard和TurbineSpringGCCloud
- 微服務SpringCloud之熔斷監控Hystrix Dashboard和Turbine微服務SpringGCCloud
- 業餘草 SpringCloud教程 | 第十二篇: 斷路器聚合監控(Hystrix Turbine)(Finchley版本)SpringGCCloud
- 跟我學SpringCloud | 第五篇:熔斷監控Hystrix Dashboard和TurbineSpringGCCloud
- springcloud(六):熔斷監控TurbineSpringGCCloud
- Spring Cloud構建微服務架構Hystrix監控皮膚SpringCloud微服務架構
- Spring Cloud 快速入門(四)Hystrix Dashboard 監控儀表盤、Turbine 聚合監控、服務降級報警機制SpringCloud
- springcloud(五):熔斷監控Hystrix DashboardSpringGCCloud
- springCloud入門學習--Hystrix狀態監控SpringGCCloud
- springcloud 微服務配置監控端點 hystrix.streamSpringGCCloud微服務
- Hystrix Turbine簡介與使用
- Hystrix 監控視覺化頁面——Dashboard 流監控視覺化
- 資料分析-皮膚資料變截距模型模型
- 概念剖析:白話主資料
- 運維監控!這六款免費管理皮膚你都知道嗎?運維
- Linux效能監測皮膚 | NETDATALinux
- SpringCloud之HystrixSpringGCCloud
- 對皮膚美白演算法的一些研究。演算法
- 業餘草 SpringCloud教程 | 第十一篇: 斷路器監控(Hystrix Dashboard)(Finchley版本)SpringGCCloud
- springCloud分散式微服務雲架構 第十二篇: 斷路器聚合監控SpringGCCloud分散式微服務架構
- 資料庫監控資料庫
- python 列出皮膚資料所有變數名Python變數
- 小喬皮膚
- (24)SpringCloud-Hystrix(熔斷器)介紹及使用SpringGCCloud
- 史上最簡單的SpringCloud教程 | 第十二篇: 斷路器監控(Hystrix Dashboard)(Finchley版本)SpringGCCloud
- 白話資料庫三正規化資料庫
- Spring Cloud(五)斷路器監控(Hystrix Dashboard)SpringCloud
- JAVA springcloud ssm b2b2c多使用者商城系統-docker-hystrix-dashboard-turbine(九)JavaSpringGCCloudSSMDocker
- Oracle資料庫記憶體監控及意義Oracle資料庫記憶體
- SpringCloud使用Sentinel 代替 HystrixSpringGCCloud
- 寶塔liunx控制皮膚,監控程式斷了以後自動重啟的指令碼指令碼
- 資料庫效能監控資料庫
- 監控資料庫活動資料庫
- 前端資料監控到底在監控什麼?前端
- MySQL監控-Datadog資料庫監控調研MySql資料庫
- SpringCloud使用Prometheus監控(基於Eureka)SpringGCCloudPrometheus
- 部落格皮膚