Spring Cloud系列(八)熔断监控Hystrix Dashboard和Turbine
熔断监控Hystrix Dashboard和Turbine
Hystrix Dashboard和Turbine是什么?
Hystrix-dashboard是一款针对Hystrix进行实时监控的工具,通过Hystrix Dashboard我们可以在直观地看到各Hystrix Command的请求响应时间, 请求成功率等数据。但是只使用Hystrix Dashboard的话, 你只能看到单个应用内的服务信息, 这明显不够. 我们需要一个工具能让我们汇总系统内多个服务的数据并显示到Hystrix Dashboard上, 这个工具就是Turbine。
使用Hystrix Dashboard
以下演示项目我都会上传到Github上,大家可以在上面拉取项目进行学习测试;
一、准备工作:
启动以前的项目 erurekaserver,config-server,eurekaclient1;
二、修改项目
复制前面的项目service-ribbon,修改RibbonApplication.java:
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient @EnableHystrix @EnableCircuitBreaker @EnableHystrixDashboard public class ServiceRibbonApplication { public static void main(String[] args) { SpringApplication.run( ServiceRibbonApplication.class, args ); } @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } @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; } }
修改pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>wg</groupId> <artifactId>sgccplatform-business-ribbon</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>sgccplatform-business-ribbon</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> <java.version>1.8</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </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-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
启动项目,访问:http://localhost:6005/login,可以访问相应的数据;
访问:http://localhost:6005/hystrix,可以看到页面:
确定,留着这个页面打开状态。
再次访问:http://localhost:6005/login,回来查看监控页:
关闭 eurekaclient1 ,访问 :http://localhost:6005/login,会看到错误信息;此时再次查看监控页面;
使用Turbine
参照上面的项目和以前的项目,把以前的项目 service-feign 进行同样的改造。
1、新建maven项目service_turbine,新建pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>wg</groupId> <artifactId>service_turbine</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service_turbine</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> <java.version>1.8</java.version> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </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-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
2、新建启动类ServiceTurbineApplication.java
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient @EnableFeignClients @EnableHystrix @EnableHystrixDashboard @EnableCircuitBreaker @EnableTurbine public class ServiceTurbineApplication { public static void main(String[] args) { SpringApplication.run( ServiceTurbineApplication.class, args ); } }
3、新建application.yml
server: port: 8767 spring: application: name: service-turbine eureka: client: serviceUrl: defaultZone: http://localhost1:6001/eureka/,http://localhost2:6001/eureka/ management: endpoints: web: exposure: include: "*" cors: allowed-origins: "*" allowed-methods: "*" turbine: app-config: service-feign,service-ribbon aggregator: clusterConfig: default clusterNameExpression: new String("default") combine-host: true instanceUrlSuffix: default: actuator/hystrix.stream
4、启动项目,访问:http://localhost:8767/turbine.stream
会看到一个这样的页面,具体信息不多解释;
5、访问:http://localhost:7605/hystrix ,填写内容;
6、点击监控,然后访问:http://localhost:8765/hello,http://localhost:8764/hello
- spring cloud 系列第5篇 —— hystrix+turbine 服务的熔断与监控 (F版本)
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- springcloud 熔断监控Hystrix Dashboard和Turbine
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- 熔断监控Hystrix Dashboard和Turbine
- SpringCloud--熔断监控Hystrix Dashboard和Turbine
- SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)
- 跟我学SpringCloud | 第五篇:熔断监控Hystrix Dashboard和Turbine
- springcloud(五):熔断监控Hystrix Dashboard和Turbine 2017/05/18
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- Spring Cloud入门-Hystrix Dashboard与Turbine断路器监控(Hoxton版本)
- Spring Cloud——断路器监控Hystrix Dashboard&Turbine
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- 微服务SpringCloud之熔断监控Hystrix Dashboard和Turbine
- springcloud(五):熔断监控Hystrix Dashboard和Turbine
- SPRINGCLOUD-熔断监控HYSTRIX DASHBOARD和TURBINE
- springcloud(5):熔断监控Hystrix Dashboard和Turbine
- Spring cloud系列十二 监控Hystrix界面:Hystrix dashboard 和 Turbine
- 跟我学SpringCloud | 第五篇:熔断监控Hystrix Dashboard和Turbine