SpringCloud学习笔记(十三、断路器聚合监控)

it2022-05-05  68

上一个是一个单体监控的实例,实际应用中,我们要监控的应用往往是一个集群,这个时候我们就得采取Turbine集群监控了。Turbine有一个重要的功能就是汇聚监控信息,并将汇聚到的监控信息提供给Hystrix Dashboard来集中展示和监控。

创建子项目

创建子项目tubine.

pom.xml

<?xml version="1.0" encoding="UTF-8"?> <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"> <parent> <artifactId>springcloud</artifactId> <groupId>edu.hpu.springcloud</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>tubine</artifactId> <name>tubine</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <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.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-turbine</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> </project>

application.yml

spring: application.name: turbine security.basic.enabled: false turbine: aggregator: clusterConfig: default appConfig: product-view-service-feign ### 配置Eureka中的serviceId列表,表明监控哪些服务 clusterNameExpression: new String("default") eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/

启动类

ProductServiceTurbineApplication,添加注解@EnableTurbine,表示开启Turbine。

package edu.hpu.springcloud; import cn.hutool.core.util.NetUtil; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.netflix.turbine.EnableTurbine; @SpringBootApplication @EnableTurbine public class ProductServiceTurbineApplication { public static void main(String[] args) { int port = 8021; if(!NetUtil.isUsableLocalPort(port)) { System.err.printf("端口%d被占用了,无法启动%n", port ); System.exit(1); } new SpringApplicationBuilder(ProductServiceTurbineApplication.class).properties("server.port=" + port).run(args); } }

AccessViewService

修改一下,让它能访问两个接口。

package edu.hpu.springcloud.util; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.http.HttpUtil; public class AccessViewService { public static void main(String[] args) { while(true) { ThreadUtil.sleep(1000); access(8014); access(8013); try { String html= HttpUtil.get("http://127.0.0.1:8012/products"); System.out.println("html length:" + html.length()); } catch(Exception e) { System.err.println(e.getMessage()); } } } public static void access(int port) { try { String html= HttpUtil.get(String.format("http://127.0.0.1:%d/products",port)); System.out.printf("%d 地址的视图服务访问成功,返回大小是 %d%n" ,port, html.length()); } catch(Exception e) { System.err.printf("%d 地址的视图服务无法访问%n",port); } } }

启动访问

挨个运行 EurekaServerApplication, ConfigServerApplication, ProductDataServiceApplication, ProductViewServiceFeignApplication:8013,, ProductViewServiceFeignApplication:8014,ProductServiceHystrixDashboardApplication, ProductServiceTurbineApplication.。 查看监控信息。 参考: 【1】、http://how2j.cn/k/springcloud/springcloud-turbine/2044.html#nowhere 【2】、http://how2j.cn/k/springcloud/springcloud-turbine/2044.html#nowhere


最新回复(0)