服務啓動後,能夠經過/health和hystrix.stream查看效果,實際上,訪問上述兩個地址,會出現404,這是由於spring boot版本的問題, html
我在這裏使用的springboot的版本是:web
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent>
使用的spring cloud的版本是spring
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
這裏,須要在movie服務的配置文件中,增長:瀏覽器
management:
endpoints:
web:
exposure:
include: ["health","info"]
而且在啓動類中,增長:springboot
@Bean public ServletRegistrationBean getServlet() { HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet(); ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet); registrationBean.setLoadOnStartup(1); registrationBean.addUrlMappings("/actuator/hystrix.stream"); registrationBean.setName("HystrixMetricsStreamServlet"); return registrationBean; }
這樣設置後,能夠開放對地址地址的訪問,具體開放參數,能夠查看springboot的文檔:app
https://docs.spring.io/spring-boot/docs/2.1.4.RELEASE/reference/htmlsingle/#boot-features-security-actuatorspring-boot
當中有很具體的說明。微服務
啓動user,eureka,movie服務,spa
訪問movie服務:http://localhost:8010/actuator/hystrix.stream日誌
在未發生實際請求時,會一直ping:ping:
當咱們訪問服務,請求user服務後,
就會一直刷日誌,這個日誌很難截圖,所以,hystrix提供了一個圖形化界面,供咱們進行查看,分析。
首先,在pom文件中,增長相應的依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>
在啓動類上 增長註解:@EnableHystrixDashboard ,啓動項目,並訪問以下地址:http://localhost:8010/hystrix
在上面的文本框中,填入hystrix.stream,而後設置一個標題,以下:
點擊monittor stream ,
而後訪問服務,查看數據變化,
實際上,一個真實的項目,有不少個微服務,這種監控單點的實例,實際上是沒有做用的。
查看單個實例的Hystrix數據在系統總體運行情況方面不是頗有用。 Turbine是一個應用程序,它將全部相關的/hystrix.stream端點聚合到一個組合的/turbine.stream中,以便在Hystrix儀表板中使用。 個別實例位於尤里卡。 運行Turbine須要使用@EnableTurbine註釋來註釋主類(例如,使用spring-cloud-starter-netflix-turbine來設置類路徑)。 Turbine 1 wiki中全部記錄的配置屬性均適用。 惟一的區別是turbine.instanceUrlSuffix不須要前置端口,由於除非turbine.instanceInsertPort = false,不然會自動處理。
默認狀況下,Turbine經過在Eureka中查找其hostName和端口條目,而後將/hystrix.stream附加到其上來查找已註冊實例上的/hystrix.stream端點。 若是實例的元數據包含management.port,則使用它來代替/hystrix.stream端點的端口值。 默認狀況下,名爲management.port的元數據條目等於management.port配置屬性。 能夠經過如下配置覆蓋它:
eureka: instance: metadata-map: management.port: ${management.port:8081}
經過這個配置呢,能夠修改hystrix.stream的端口,
spring cloud 提供了turbine,下面咱們先搭建一個turbine server
turbine是從eureka上獲取節點數據的,所以,turbine也須要註冊到eureka上,首先,引入相應的依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
在啓動類上,增長以下的註解:
@EnableTurbine
若是名稱是默認值,則能夠省略cluster參數。 cluster參數必須與turbine.aggregator.clusterConfig中的條目匹配。 從尤里卡返回的值是大寫的。 所以,若是有一個名爲Customers的應用程序在Eureka註冊,則如下示例有效:
咱們在配置文件中,增長相似的配置:
1 spring: 2 application: 3 name: microservice-hystrix-turbine 4 server: 5 port: 8031 6 7 eureka: 8 client: 9 serviceUrl: 10 defaultZone: http://user:password123@192.168.1.114:8761/eureka 11 instance: 12 prefer-ip-address: true 13 instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}} 14 15 turbine: 16 aggregator: 17 clusterConfig: MICROSERVICE-CONSUMER-MOVIE-FEGIN-WITH-HYSTRIX 18 appConfig: microservice-consumer-movie-fegin-with-hystrix
啓動eureka,user,dasdboard,movie服務
訪問:http://localhost:8031/turbine.stream?cluster=MICROSERVICE-CONSUMER-MOVIE-FEGIN-WITH-HYSTRIX
就能看到打印的結果,
下載把地址,放入儀表盤,dasdboard
下面訪問movie服務,查看訪問結果
這個監控,有必定的延時,咱們再次啓動一個movie服務,相同的服務名稱,
而後再次查看儀表盤,能夠查看到兩個節點的監控都有了,可是後起的那個監控,會延遲一段時間,纔會被儀表盤監控到
下面看一下turbine是如何監控多個不一樣的服務的
修改turbine的配置文件:
turbine: aggregator: clusterConfig: default appConfig: microservice-consumer-movie-fegin-with-hystrix,microservice-consumer-movie clusterNameExpression: "'default'"
這樣,使用了一個「默認」的集羣,如今直接訪問turbine的http://localhost:8031/turbine.stream
就能看到如下數據:
下面將turbine的地址填入dasdboard,
經過瀏覽器,分別請求另外兩個數據,查看儀表盤結果
就能夠發現,儀表盤監控了兩個項目。
默認狀況下,trubine在註冊的實例上查找/hystrix.stream端點,方法是在Eureka中查找其homePageUrl 條目。而後將/hystrix.stream附加