spring cloud 使用Turbine 監控集群的訪問情況


上一篇寫了如何使用 Hystrix的dashboard去監控單個應用的訪問情況

現在要介紹的是如何去監控整個集群的訪問情況,這里要使用到Turbine,一個Netflix的開源項目

它可以將多hystrix.stream的內容聚合為一個數據源供給dashboard展示。

我們先說一下整體的架構:

2個服務調用者:consumer     consumer2

分別調用  provider   provider2hello方法

新建一個負責監控的子項目 dashboard-turbine 去監控集群

 

監控者dashboard-turbine

在 pom.xml 添加依賴

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.1.3.RELEASE</version>
</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-hystrix-dashboard</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>

application.yml

spring:
  application:
    name: dashboard

server:
  port: 8060

eureka:
  client:
    service-url:
      defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
feign:
  hystrix:
    enabled: true

turbine:
  app-config: consumer,consumer2     //注冊中心的調用者名稱
  aggregator:
    cluster-config: default      //默認default
  cluster-name-expression: new String("default")      
  • turbine.appConfig :配置Eureka中的serviceId列表,表明監控哪些服務
  • turbine.aggregator.clusterConfig :指定聚合哪些集群,多個使用”,”分割,默認為default。可使用http://.../turbine.stream?cluster={clusterConfig之一}訪問
  • turbine.clusterNameExpression :
  •  1. clusterNameExpression指定集群名稱,默認表達式appName,此時:turbine.aggregator.clusterConfig需要配置想要監控的應用名稱;
  •  2. 當clusterNameExpression: default時,turbine.aggregator.clusterConfig可以不寫,因為默認就是default; 
  •  3. 當clusterNameExpression: metadata[‘cluster’]時,假設想要監控的應用配置了eureka.instance.metadata-map.cluster: ABC,則需要配置,同時turbine.aggregator.clusterConfig: ABC

啟動類:

@SpringBootApplication
@EnableHystrixDashboard    //開啟監控
@EnableTurbine        //開啟turbine支持 public class ApplicationStart {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationStart.class);
    }
}

服務提供provider

和前面幾篇的一樣,就是多了一個復制品, 並把application.name改為providr2 

服務調用consumer   

 

在前面的Hystrix版的調用者的基礎上,修改如下:

1.添加pom.xml的依賴

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
        </dependency>

2.啟動類添加servlet,所有需要被監控的應用都一定要添加

  @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;
    }

依次啟動2個privider和2個consumer,以及監控dashboard-turbine

打開http://localhost:8060/hystrix/

 

 

 訪問默認集群,輸入 : http://localhost:8060/turbine.stream  點擊確定,可以看到監控內容,如果一直顯示Loading 是因為在等待訪問,請求一次服務就有了

 

 可以看到2個provider的信息和2個consumer的訪問情況,分別訪問

localhost:8080/message/remote/hello    這是consumer的,監控中對應會有訪問顯示

localhost:8081/message/remote/hello    這是consumer1的,監控中對應會有訪問顯示

訪問http://localhost:8001/turbine.stream,可以拿到訪問情況的數據流,會不斷的Ping,往下刷數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM