springCloud - 第12篇 - 服務監控 Hystrix 面板

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

前面有用過 Hystrix 熔斷,在多服務運行時。可以通過?Hystrix 的監控面板來實時觀察各個服務的運行健康、效率和請求量等。

首先從《Spring Cloud微服務實戰》作者的博客中借用一圖:

此圖出自:http://blog.didispace.com/spring-cloud-starter-dalston-5-1/

這圖是怎么來的呢? 下面一步一步來實現。?

1. 新建一個 springboot 工程?hystrix-dashboard,實現 hystrix?的監控面板。( 工程詳細新建方式在前面幾篇博客中均有說明 )

1.1 工程結構:

?1.2? pom 依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>hystrix-dashboard</artifactId><version>0.0.1-SNAPSHOT</version><name>hystrix-dashboard</name><description>服務監控-面板</description><properties><java.version>1.8</java.version></properties><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><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

1.3?application.properties :

# 端口
server.port= 8888# 工程名
spring.application.name= hystrix-dashboard# 修改 Hystrix 默認超時時間
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds= 2000 

1.4 主啟動類:

package com.hystrixdashboard;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;// 開啟監控面板
@EnableHystrixDashboard@SpringBootApplication
public class HystrixDashboardApplication {public static void main(String[] args) {SpringApplication.run(HystrixDashboardApplication.class, args);}}

此時,啟動工程,瀏覽器訪問:http://localhost:8888/hystrix.stream

面板主頁面已經有了,但是無任何實際監控信息。要查看具體內容需在第一個輸入框中輸入監控對象 相關服務的 URL。

如頁面上提示的信息所示:有 3 種 URL 方式可以查看監控內容。

前 2 者都是監控集群服務時要輸入的 UR,最后一種為監控單個應用服務的 URL :

默認集群 :http://turbine-hostname:port/turbine.stream?指定集群:http://turbine-hostname:port/turbine.stream?cluster=[clusterName]指定單個服務:http://hystrix-app:port/hystrix.stream

2. 改造已有工程 ribbon?,把其服務納入 Hystrix 的監控中。

2.1 pom 中加入依賴,開啟 hystrix 監控:

        <!-- 開啟 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>

此時 ribbon?完整 pom 依賴為:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ribbon</groupId><artifactId>service-ribbon</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>service-ribbon</name><description>服務消費 ribbon 方式</description><parent><groupId>com.base</groupId><artifactId>base-config</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><!-- 開啟 hystrix 監控 -->      <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--熔斷器--><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-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-ribbon</artifactId></dependency></dependencies><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

2.2 確認啟動類有注解: Hystrix @EnableHystrix,以 開啟斷路器。同時加上以下代碼,以保證 Hystrix 映射正常運行:

@Beanpublic ServletRegistrationBean hystrixMetricsStreamServlet() {ServletRegistrationBean registration = new ServletRegistrationBean(new HystrixMetricsStreamServlet());registration.addUrlMappings("/hystrix.stream");return registration;}

此時 ribbon?完整啟動類為:

package com.ribbon.serviceribbon;import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@SpringBootApplication// 開啟斷路器: Hystrix
@EnableHystrix// 標明自已為服務
@EnableDiscoveryClient
public class ServiceRibbonApplication {public static void main(String[] args) {SpringApplication.run(ServiceRibbonApplication.class, args);}/*** 向 ioc 注入 bean : restTemplate;* 注解 @LoadBalanced :此 bean 開啟負載均衡。* @return*/@Bean@LoadBalancedRestTemplate restTemplate() {return new RestTemplate();}@Beanpublic ServletRegistrationBean hystrixMetricsStreamServlet() {ServletRegistrationBean registration = new ServletRegistrationBean(new HystrixMetricsStreamServlet());registration.addUrlMappings("/hystrix.stream");return registration;}
}

2.3? 配置文件 application.properties 中增加:?management.endpoints.web.exposure.include= hystrix.stream,以配置 actuator 的?endpoint,完整配置為:

# 注冊中心 - 端口: 1234、工程名: eureka (見 eureka 工程中配置)。
eureka.client.serviceUrl.defaultZone= http://localhost:1234/eureka/# 端口
server.port= 8701# 工程名
spring.application.name= ribbon# 也可配置為'*'
management.endpoints.web.exposure.include= hystrix.stream

3.依次啟動工程:注冊中心 eureka 、服務應用 ribbon 、監控面板 hystrix 、服務應用 seeParam 。

關于?ribbon 和 seeParam 詳見文章:springCloud - 第5篇 - 斷路器 Hystrix ( Feign 、Ribbon )

3.1 注冊中心可見 ,2 個服務都已注冊:

3.2? 此時查看單個服務 ribbon 的運行狀況,在 Hystrix 界面第一個輸入框中輸入:?http://localhost:8701/hystrix.stream

可以看到 :

3.3? 當 seeParam 工程運行正常時,熔斷未觸發,此時 ribbon 服務也運行正常。

多次刷新請求?http://localhost:8701/seeParam?param=99?,這樣才會在 hystrix 中有統計數據,2分鐘內請求如下:

如文初說明,線條的高低起伏變化表示請求量。

而圓球則主要表示2層意思:

1.圓球的顏色可能變化為:綠色、黃色、橙色、紅色,分別對應服務的健康程度,綠色健康程度最高,紅色最差。2.球體大小變化:圓越大則代表請求量越大,同理,圓越小則代表請求量越小。

3.4 停掉工程?seeParam 服務時,熔斷觸發,此時 ribbon 服務運行正常,但請求seeParam 失敗。

多次刷新請求?http://localhost:8701/seeParam?param=99?,這時2分鐘內,在 hystrix 中統計數據如下:

如上圖 紅框中所示,seeParam 工程服務請求超時率為 100% 。

到此單個服務的監控就實現了。

PS:遇到報錯:

com.sun.jersey.api.client.ClientHandlerException:java.net.ConnectException: Connection refused: connect

解決方式:(其實文中 已經有解決方法了)在被監控服務 ribbon 中加上 2 點:

1) 配置文件:

# 也可配置為'*'
management.endpoints.web.exposure.include= hystrix.stream

2)啟動類:

   @Beanpublic ServletRegistrationBean hystrixMetricsStreamServlet() {ServletRegistrationBean registration = new ServletRegistrationBean(new HystrixMetricsStreamServlet());registration.addUrlMappings("/hystrix.stream");return registration;}

此解決方法出自:?https://blog.csdn.net/WYA1993/article/details/82419131

-------------------------------------------------------------

下一篇: springCloud - 第13篇 - 服務監控 集群模式 Hystrix-turbine

源碼見:

https://gitee.com/FJ_WoMenDeShiJie/springcloud-seeParam

https://gitee.com/FJ_WoMenDeShiJie/springcloud-ribbon

https://gitee.com/FJ_WoMenDeShiJie/springcloud-hystrix-dashboard

-------------------------------------------------------------

PS:這個系列不定時更新,只是個人的學習分享,

內容全程參考書目:

《Spring Cloud 與 Docker 微服務架構空實戰?》、

《Spring Cloud 微服務實戰》及此書作者博客:http://blog.didispace.com/spring-cloud-learning/

《深入理解 Spring Cloud 與微服務構建》及此書作者博客:https://blog.csdn.net/forezp/article/details/70148833

----------------------------------------------------------------

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447565.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447565.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447565.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

專訪Google數據科學家彭晨:大數據成為潮流走近各行各業!

摘要&#xff1a;在“2014中美大數據研討會”開始之前&#xff0c;CSDN采訪了谷歌公司數據科學家彭晨&#xff0c;他表示之所以“大數據”火&#xff0c;是因為人類第一次可以精確的、系統的、實時的、全方位的、永久的獲取、記錄、分析、并保存海量的數據。 端午節后6月6日&a…

解決:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 場景&#xff0c;springcloud 學習工程中&#xff0c;把 feign 和 ribbon 工程 作為應用服務&#xff0c;納入 hystrix-turbine 服務…

白領夫婦白手起家 6年賺得兩房兩車

“讓金錢成為你們的奴隸&#xff0c;而不是被金錢奴役著。”金先生談到他的理財經驗時如是說。從大學畢業開始&#xff0c;他通過6年在投資道路上摸爬滾打&#xff0c;靠夫妻兩人的雙手掙得了全部的家當而沒有依靠父母&#xff0c;如今已擁有兩房兩車和上百萬的資產&#xff0c…

解決:com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused:

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 場景&#xff1a;啟動一個需要注冊到 eureka 注冊中心的服務 seeParam 報錯&#xff1a; com.sun.jersey.api.client.ClientHandle…

springCloud - 第13篇 - 服務監控 集群模式 Hystrix-turbine

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 在springcloud 體系中&#xff0c;可以用 hystrix-dashboard 實時監控服務的運行狀態。上一文記錄了單實例的監控&#xff0c;現在實…

借錢的境界:開價越低 借成的機會反而越小

一提起借錢&#xff0c;沒有幾個人不膽戰心驚的。有限的幾張鈔票&#xff0c;好端端地隱居在自己口袋里&#xff0c;忽然一只手伸過來把它帶走&#xff0c;真教人一點安全感都沒有。借錢的威脅不下于核子戰爭&#xff1a;后者畢竟不常發生&#xff0c;而且同難者眾&#xff0c;…

解決:Error response from daemon: Cannot restart container xxx: driver failed programming external

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我的情況&#xff1a;個人站點訪問不了&#xff0c;重啟了阿里云ECS服務器后&#xff0c;發現服務器 80端口不通&#xff0c;于是重啟…

專訪許鵬:談C程序員修養及大型項目源碼閱讀與學習

摘要&#xff1a;閱讀源碼是開源項目最好的學習方式&#xff0c;然而真正的執行起來卻并不容易。這里我們為大家分享許鵬的源碼閱讀經驗、C程序員的修養以及Spark和Storm源碼走讀博文。 對許鵬的第一印象來源于其Bolg的粗讀&#xff0c;最早時候更準確說應該是博文的粗略統計—…

解決:mysql 連接報錯 Authentication plugin ‘caching_sha2_password‘cannot be loaded

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Navicat連接linux上的mysql時報如下錯誤&#xff1a; 錯誤原因&#xff1a; 即從mysql5.7版本之后&#xff0c;默認采用了caching_sha2_…

酒店房間和 C++ 局部變量的作用域

本文由 伯樂在線 - 菜鳥浮出水 翻譯自 StackOverflow。歡迎加入 技術翻譯小組。轉載請參見文章末尾處的要求。問題&#xff1a;Can a local variable’s memory be accessed outside its scope? 有一段局部變量的內存&#xff0c;可以從其范圍之外訪問它么&#xff1f; 如下…

解決:Access denied for user ‘root’@‘localhost’(using password: YES)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 我報這個錯的原因很簡單&#xff1a;數據庫連接時密碼輸入錯誤。把密碼確認對了&#xff0c;就連接成功了。

【歷史回顧】Linux發展一覽

我們周圍到處都有Linux的身影&#xff0c;在家中、公司里、大學、實驗室&#xff0c;太空空間站。現在的Linux已經從一個個人愛好發展成了一場計算機革命。在這篇文章里&#xff0c;我們向你展示最完整的Linux 23年來發展的歷史年表。我們周圍到處都有Linux的身影&#xff0c;在…

專訪聯想謝政維:功耗和價格是天蝎項目最大障礙!

摘要&#xff1a;與國外OpenStack和OCP&#xff08;開放計算項目&#xff09;頻頻見諸報端不同&#xff0c;中國的天蝎計劃看起來神神秘秘&#xff0c;今天專訪聯想謝政維&#xff0c;他幫我們解密了目前天蝎項目的一些基本情況&#xff0c;以及他對未來天蝎發展的觀點。 服務…

解決:Chrome 插件安裝時提示 程序包無效:“CRX_HEADER_INVALID“

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 今天在添加谷歌插件的時候&#xff0c;卻發現谷歌瀏覽器顯示 程序包無效&#xff1a;"CRX_HEADER_INVALID"&#xff0c;現整理…

65種GPU性能測試,AMD開源驅動領先!

摘要&#xff1a;近日&#xff0c;Phoronix測試了65 種不同的GPU使用開源驅動的OpenGL性能&#xff0c;測試的GPU型號包括Intel HD Graphics、AMD Radeon、AMD FirePro和NVIDIA GeForce系列。結果顯示&#xff0c;相比之下&#xff0c;AMD開源驅動領先于NVIDIA。 【編者按】20…

1分鐘看懂:java 項目中 VO 、DTO、Entity,各自是在什么情況下應用的

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、entity 里的每一個字段&#xff0c;與數據庫相對應&#xff0c; 2、vo 里的每一個字段&#xff0c;是和你前臺 html 頁面相對應&…

指尖上的藝術——如何運用代碼發揮無限創意

摘要&#xff1a;計算機為我們的生活帶來了不計其數的變化&#xff0c;現在&#xff0c;我們不妨也把它與藝術結合起來&#xff0c;去從機器的角度來為生活增添活力與色彩&#xff0c;開拓一個無限可能的藝術創作新境界。 寫在前面 生成的藝術&#xff0c;指尖上的藝術&#…

解決:XXX類存在 卻報錯 Unkonwn class:‘XXX‘ 、@Autoeired 注入失敗

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 我的情況如圖&#xff0c;有一個CuxxxxManager 類明明是就在本工程中的&#xff0c;我想注入到對應 Service 中&#xff0c;卻直接報…

精益設計:“紙上談兵”的說服力

摘要&#xff1a;當你和團隊通宵達旦地輸出大量完整而精美的方案時&#xff0c;可客戶卻根本不買帳。這究竟是溝通出了問題&#xff0c;還是我們犯了錯&#xff1f;如何提高設計效率、提升溝通及如何設計出更好的用戶體驗是每個互聯網從業者都值得關注的問題。 【編者按】此前…

《西線無戰事》:合上書的那一刻:只想痛哭

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 昨晚看完此書&#xff0c;看的時候&#xff0c;我一直以為他是在回憶&#xff0c;然而&#xff0c;最終卻沒有一個人活下來&#xff0c;…