使用Turbine聚合监控数据
除了使用/hystrix.stream端点监控单个微服务实例,可以使用Turbine将所有相关的/hystrix.stream聚合到一个组合的/turbine.stream中。
本文依据Hystrix,可见http://blog.csdn.net/u012482647/article/details/78148447 Spring Cloud学习–容错机制(Hystrix之服务降级)
1.创建一个spring boot项目,添加spring-cloud-starter-turbine依赖。
<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>
2.在启动类上添加注解@EnableTurbine
@EnableTurbine
@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudTurbineApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudTurbineApplication.class, args);
}
}
3.配置文件:
spring.applicaton.name=turbine-service
server.port=2002
management.port=8990
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka/
##turbine.app-config指定了要收集监控信息的服务名
turbine.app-config=string-service
##turbine.cluster-name-expression 指定集群名称
turbine.cluster-name-expression="default"
##使同一主机上的多个服务实例可以通过主机名和端口号的组合来进行区分
turbine.combine-host-port=true
启动hystrix Dashboard项目,在url一栏中输入:http://localhost:2002/turbine.stream 出现如图界面
二、带你出坑
我在启动Turbine服务时,出现以下错误,导致出现不了如上界面。
com.netflix.turbine.monitor.instance.InstanceMonitor$MisconfiguredHostException: [{"timestamp":1506864554002,"status":404,"error":"Not Found","message":"No message available","path":"/string-service/hystrix.stream"}]
at com.netflix.turbine.monitor.instance.InstanceMonitor.init(InstanceMonitor.java:318) ~[turbine-core-1.0.0.jar:na]
at com.netflix.turbine.monitor.instance.InstanceMonitor.access$100(InstanceMonitor.java:103) ~[turbine-core-1.0.0.jar:na]
at com.netflix.turbine.monitor.instance.InstanceMonitor$2.call(InstanceMonitor.java:235) [turbine-core-1.0.0.jar:na]
at com.netflix.turbine.monitor.instance.InstanceMonitor$2.call(InstanceMonitor.java:229) [turbine-core-1.0.0.jar:na]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
这个问题,待解决后补充。