天天看點

使用Turbine聚合監控

Turbine概述

Turbine真正做的,就是将每一個(指定)服務的Hystrix/stream中的狀态資訊取出,并集中處理(計算與展示),應該說,它是具有自己獨立的排程的,服務(執行個體)發現,服務連接配接,資料聚合,資料輸出,共四個過程。

使用Turbine聚合監控

如上圖: Turbine首先通過

InstanceDiscovery

子產品擷取所有的執行個體資訊(定期更新擷取),

ConnectionManager

負責連接配接到執行個體,連接配接上執行個體後,便會有源源不斷的資料流發送給聚合器

Aggregator

之後,再傳送給需要的地方。

使用Turbine聚合監控

在使用HystrixDashboard元件監控服務的熔斷器狀況時,每個服務都有一個HystrixDashboard首頁,當服務數量很多時,監控非常不友善。為了同時監控多個服務的熔斷器的狀況,Netflix 開源了Hystrix 的另一個元件Turbine。Turbine 用于聚合多個Hystrix Dashboard,将多個Hystrix Dashboard元件的資料放在一個頁面 上展示,進行集中監控。

依賴:

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

配置:

spring:
  application:
    name: service-turbine

server:
  port: 8769

turbine:
  aggregator:
    clusterConfig: default #指定聚合哪些叢集,多個使用","分割,預設為default。可使用http://.../turbine.stream?cluster={clusterConfig}通路
  app-config: eureka-ribbon-client,eureka-feign-client #配置Eureka中的serveceId清單,表明監控哪些服務
  cluster-name-expression: new String("default")
  # 1. ClusterNameExpression:指定叢集名稱,預設表達式appName;此時trubine.aggregatro.clusterConfig需要配置想要監控的應用名稱
  # 2. 當ClusterNameExpression:default時,turbine.aggregator.clusterConfig可以不寫,因為預設就是default
  # 3. 當ClusterNameExpression:metadata['cluster']時,假設想要監控的應用配置了
  #    eureka.instance.metadata-map.cluster:ABC,則需要配置,同時turbine.aggregator.clusterConfig:ABC

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
           
  • turbine.aggregator.clusterConfig配置了需要監控的服務名
  • clusterNameExpression預設為服務名的叢集,此時用預設的即可
  • turbine.aggregator.clusterConfig預設就是default

示例:

turbine:
	aggregator:
		clusterConfig:CLOUD_SIMPLE_SERVICE 
	appConfig:cloud-simple-service
	clusterNameExpression:metadata['cluster']


在hystrix dashboard的監控url中就應該輸入:
http://localhost:port/turbine.stream?cluster=CLOUD-SIMPLE-SERVICE
cluster對應clusterConfig中的名稱
           

開啟turbine

@SpringBootApplication
@EnableTurbine//開啟trubine
public class EurekaMonitorClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaMonitorClientApplication.class, args);
    }
}
           

啟動工程eureka-server、eureka-client、 eureka-ribbon-client 和eureka-monitor -client。

在浏覽器上通路

http://localhost:8764hi?name-forezp和ht:/calhost:8765/hi?name=forezpo

在浏覽器上打開網址htp://localhost:8765/hystrix,這個界面為Hystrix Dashboard界面。

在界面上依次輸入監控流的Url位址

htp://localhost:8769/turbine.stream

、監控時間間隔2000毫秒和title,單擊“monitor”,可以看到如圖

使用Turbine聚合監控

這個頁面聚合了eureka-ribbon-client和eureka-feign-client的Hystrix Dashboard資料。

繼續閱讀