Hystrix服务监控

【Hystrix服务监控】历览千载书,时时见遗烈。这篇文章主要讲述Hystrix服务监控相关的知识,希望能为你提供帮助。
Hystrix服务监控 SpringCloud全家桶 学习目标

Hystrix服务监控

文章图片

Actuator除了实现服务容错之外,Hystrix 还提供了近乎实时的监控功能,将服务执行结果和运行指标,请求数量成功数量等等这些状态通过 Actuator 进行收集,然后访问 /actuator/hystrix.stream 即可看到实时的监控数据。
添加依赖
在需要开启数据监控的项目中添加 actuator 依赖。
< !-- spring boot actuator 依赖 --> < dependency> < groupId> org.springframework.boot< /groupId> < artifactId> spring-boot-starter-actuator< /artifactId> < /dependency>

配置文件
在配置文件中开启 hystrix.stream 端点。如果希望所有端点暴露,配置为 \'*\'
# 度量指标监控与健康检查 management: endpoints: web: exposure: include: hystrix.stream

启动类
package com.xxxx; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; // 开启熔断器注解 2 选 1,@EnableHystrix 封装了 @EnableCircuitBreaker // @EnableHystrix @EnableCircuitBreaker @SpringBootApplication public class OrderServiceRestApplication {@Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }public static void main(String[] args) { SpringApplication.run(OrderServiceRestApplication.class, args); }}

访问
Hystrix服务监控

文章图片

Hystrix服务监控

文章图片

此时并没有获取到 Hystrix 的数据。接下来请求一个肯定会出错的方法产生服务熔断降级处理后,结果如下:
Hystrix服务监控

文章图片

对于这种纯 JSON 的查看方式非常不方便我们直观的观察到服务的运行状态。我们可以使用 Hystrix 监控中心来进行查看。
监控中心
Hystrix服务监控

文章图片

所谓的监控中心就是 Hystrix 提供的一套可视化系统 Hystrix-Dashboard ,可以非常友好的看到当前环境中服务运行的状态。Hystrix-Dashboard 是一款针对 Hystrix 进行实时监控的工具,通过 Hystrix-Dashboard 我们可以直观地看到各 Hystrix Command 的请求响应时间,请求成功率等数据。
添加依赖
在需要开启数据监控的项目中添加 dashboard 依赖。
< !-- spring boot actuator 依赖 --> < dependency> < groupId> org.springframework.boot< /groupId> < artifactId> spring-boot-starter-actuator< /artifactId> < /dependency> < !-- spring cloud netflix hystrix 依赖 --> < dependency> < groupId> org.springframework.cloud< /groupId> < artifactId> spring-cloud-starter-netflix-hystrix< /artifactId> < /dependency> < !-- spring cloud netflix hystrix dashboard 依赖 --> < dependency> < groupId> org.springframework.cloud< /groupId> < artifactId> spring-cloud-starter-netflix-hystrix-dashboard< /artifactId> < /dependency>

启动类
在需要开启数据监控的项目启动类中添加 @EnableHystrixDashboard 注解。
package com.xxxx; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; // 开启熔断器注解 2 选 1,@EnableHystrix 封装了 @EnableCircuitBreaker // @EnableHystrix @EnableCircuitBreaker // 开启数据监控注解 @EnableHystrixDashboard @SpringBootApplication public class OrderServiceRestApplication {@Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }public static void main(String[] args) { SpringApplication.run(OrderServiceRestApplication.class, args); }}

访问
Hystrix服务监控

文章图片

查看数据
输入能够返回监控数据的URL:
Hystrix服务监控

文章图片

监控中心图解
Hystrix服务监控

文章图片

聚合监控
Hystrix服务监控

文章图片

Turbine 是聚合服务器发送事件流数据的一个工具,dashboard 只能监控单个节点,实际生产环境中都为集群,因此可以通过 Turbine 来监控集群服务。
创建项目
hystrix-demo 父工程下创建 hystrix-turbine 工程。
Hystrix服务监控

文章图片

Hystrix服务监控

文章图片

Hystrix服务监控

文章图片

Hystrix服务监控

文章图片

Hystrix服务监控

文章图片

添加依赖
项目引入 hystrixdashboardturbine 三个依赖。
< ?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"> < modelVersion> 4.0.0< /modelVersion> < groupId> com.xxxx< /groupId> < artifactId> hystrix-turbine< /artifactId> < version> 1.0-SNAPSHOT< /version> < !-- 继承父依赖 --> < parent> < groupId> com.xxxx< /groupId> < artifactId> hystrix-demo< /artifactId> < version> 1.0-SNAPSHOT< /version> < /parent> < !-- 项目依赖 --> < dependencies> < !-- spring-cloud netflix hystrix 依赖 --> < dependency> < groupId> org.springframework.cloud< /groupId> < artifactId> spring-cloud-starter-netflix-hystrix< /artifactId> < /dependency> < !-- spring cloud netflix hystrix dashboard 依赖 --> < dependency> < groupId> org.springframework.cloud< /groupId> < artifactId> spring-cloud-starter-netflix-hystrix-dashboard< /artifactId> < /dependency> < !-- spring cloud netflix turbine 依赖 --> < dependency> < groupId> org.springframework.cloud< /groupId> < artifactId> spring-cloud-starter-netflix-turbine< /artifactId> < /dependency> < /dependencies> < /project>

配置文件
application.yml
server: port: 8181 # 端口spring: application: name: hystrix-turbine # 应用名称# 配置 Eureka Server 注册中心 eureka: instance: prefer-ip-address: true# 是否使用 ip 地址注册 instance-id: ${spring.cloud.client.ip-address}:${server.port} # ip:port client: service-url:# 设置服务注册中心地址 defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/# 聚合监控 turbine: # 要监控的服务列表,多个用逗号分隔 app-config: order-service-rest,order-service-feign # 指定集群名称 cluster-name-expression: "\'default\'"

启动类
启动类需要开启 @EnableHystrix@EnableHystrixDashboard@EnableTurbine 三个注解。
package com.xxxx; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; import org.springframework.cloud.netflix.turbine.EnableTurbine; // 开启熔断器注解 2 选 1,@EnableHystrix 封装了 @EnableCircuitBreaker // @EnableHystrix @EnableCircuitBreaker // 开启数据监控注解 @EnableHystrixDashboard // 开启聚合监控注解 @EnableTurbine @SpringBootApplication public class HystrixTurbineApplication {public static void main(String[] args) { SpringApplication.run(HystrixTurbineApplication.class, args); }}

访问
order-service-restorder-service-feign 都配置监控中心,最终环境如下:
Hystrix服务监控

文章图片

访问多节点服务状态数据如下:
Hystrix服务监控

文章图片

order-service-restorder-service-feign 两个服务的运行状态如下:
Hystrix服务监控

文章图片

至此 Hystrix 服务监控知识点就讲解结束了。非常感谢你可以认真学习至此,加油少年~

加入小编的Java学习交流君羊(785794074)暗号:67

    推荐阅读