架构图
上图每个App都要暴露一个Url,用于将自己的依赖调用统计信息的输出。
单个App时,可直接将其Url输入Dashboard进行图形化分析。
采用App集群时,会将App的一套代码,在不同机器不同IP上起多个实例,调用时可能根据某种负载均衡策略调用,统计依赖调用信息时,应该将一个App集群内不同服务实例中相同的Command聚合到一个断路器上,进行统一监控。
聚合步骤
App暴露统计信息到单个Url
搭建Turbine聚合服务器,聚合为一个Turbine-Url
采用Dashboard解析Turbine-Url为图形监控界面
1,3前面已经介绍过,下面主要介绍搭建Turbine聚合服务器
搭建Turbine聚合服务器
非SpringBoot项目
- 配置Turbine Servlet收集器
1
2
3
4
5
6
7
8
9
10<servlet>
<description></description>
<display-name>TurbineStreamServlet</display-name>
<servlet-name>TurbineStreamServlet</servlet-name>
<servlet-class>com.netflix.turbine.streaming.servlet.TurbineStreamServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TurbineStreamServlet</servlet-name>
<url-pattern>/turbine.stream</url-pattern>
</servlet-mapping> - classpath下编写config.properties配置集群实例
单集群
1 | # 单集群配置 |
多集群
1 | # 配置两个集群:mobile-online,web-online |
SpringBoot项目
- pom.xml
1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
- application.properties
1
server.port=3333
- config.properties 同非上文
- 启动类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25package com.fuyi.hystrix.turbine;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import com.netflix.turbine.init.TurbineInit;
import com.netflix.turbine.streaming.servlet.TurbineStreamServlet;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
TurbineInit.init();
}
@Bean
public ServletRegistrationBean servletRegistrationBean() {
// ServletName默认值为首字母小写,即myServlet
return new ServletRegistrationBean(new TurbineStreamServlet(), "/turbine.stream");
}
}测试
启动dashboard,访问 http://localhost:2222/hystrix
在127.0.0.1和192.168.1.184分别启动整合了Hystrix的SpringMVC项目
启动上文搭建的Turbine聚合服务器,其聚合后的统计数据输出Url为: http://localhost:3333/turbine.stream?cluster=mobile-online
将3中的Url输入1中dashboard进行图形化分析监控