從零開始學spring cloud(十一) -------- hystrix監控

 

 

1、官方文檔閱讀

服務啓動後,能夠經過/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

當中有很具體的說明。微服務

2、實踐

啓動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附加

相關文章
相關標籤/搜索