基于 Hystrix 高并发服务限流第 5 篇 —— Hystrix 监控

查看之前的博客可以点击顶部的【分类专栏】

 

Hystrix 除了提供之前说过的请求缓存、请求合并、服务降级、熔断之外,还提供了 Hystrix 服务监控。

 

1、Actuator

Hystrix 提供了几乎实时的监控功能,将服务执行结果和运行指标、请求数量(成功、失败数量)等这些状态通过 Actuator 进行收集,然后访问 /actuator/hystrix.stream 即可查看实时的监控数据。

比如我们需要给 feign-server 添加 Actuator 监控,以及 Hystrix 的依赖,在 pom.xml 增加配置:

        <!-- 添加 actuator 依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- 添加 hystrix 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

然后 feign-server 启动的时候,默认开启 Actuator 监控。

然后重启服务,浏览器访问:http://127.0.0.1:9092/actuator

actuator 默认开始健康检查和 info 端点。其它端点默认不开启。尤其是 shutdown 端点。

因此我们需要在 yml 配置文件中显示的配置。

# 端点管理
management:
  endpoints:
    web:
      exposure:
        include: '*'  # * 表示开启所有端点

然后,在启动类增加注解:@EnableCircuitBreaker //启动断路器

 

然后重启 feign-server,刷新:

 

如果想要进入某个端点查看,可以在 URL 后加入,比如:http://127.0.0.1:9092/actuator/hystrix.stream

可以看到它一直在 ping,就是在检测我们项目的运行环境。

然后我们发起一个请求到 product-server,继续查看

看到了具体的数据。对于这些数据的查看是非常艰难的,因此,我们还需要一个可视化的仪表盘来查看。

 

Hystrix 监控中心 —— Dashboard

 pom.xml 添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

启动类添加:@EnableHystrixDashboard //开启数据监控

重启服务,浏览器输入:http://127.0.0.1:9092/hystrix

 

点击【Monitor Stream】

然后发送一些请求,查看。

各项说明在右上角,对应的颜色。下方是线程池的监控数据。

可以借助浏览器的翻译功能。。。

 

 

Hystrix 聚合监控 —— Turbine(集群监控)

Turbine是聚合服务器发送事件流数据的一个工具,dashboard 只能监控单个节点,实际生产环境都是集群,因此可以通过 turbine 来监控集群服务。

我们需要创建一个模块,用于整合 Turbine 的。它需要注册到注册中心,然后通过注册中心去发现服务。因为我们要监控集群下的所有微服务,因此我们把下面的依赖添加到最外层的 pom.xml 让各个微服务都能使用,不需要每个都去添加。

        <!-- 添加 hystrix 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <!-- 添加 dashboard 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <!-- 添加 turbine 依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
        </dependency>

然后 turbine-server 的 bootstrap.yml 配置

server:
  port: 9099

spring:
  application:
    name: turbine-server

eureka:
  instance:
    hostname: 127.0.0.1
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8080/eureka/

#聚合监控
turbine:
  # 要监控的服务列表,多个用逗号隔开
  app-config: product-server,order-server,feign-server
  cluster-name-expression: "'default'"

启动类:

package com.study;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.netflix.turbine.EnableTurbine;

/**
 * @author biandan
 * @description
 * @signature 让天下没有难写的代码
 * @create 2021-06-20 下午 10:45
 */
@SpringBootApplication
@EnableHystrix //开启 Hystrix
@EnableHystrixDashboard //开启数据监控
@EnableTurbine //启用聚合监控
public class TurbineApplication {

    public static void main(String[] args) {
        SpringApplication.run(TurbineApplication.class, args);
    }
}

要开启熔断器的、监控中心,turbine的注解等。

 

然后,要监控的其它微服务,也要在启动类添加这几个注解:

@EnableHystrix //开启 Hystrix
@EnableHystrixDashboard //开启数据监控
@EnableTurbine //启用聚合监控

@EnableHystrix 注解包含了 @EnableCircuitBreaker,因此如果添加了 @EnableHystrix 就不需要添加 @EnableCircuitBreake,不过添加都没关系的。

 

然后所有的微服务的配置文件,都要开启健康端点,即增下面的配置:

# 端点管理
management:
  endpoints:
    web:
      exposure:
        # 开启指标监控和健康检查
        include: hystrix.stream

 

然后把我们的微服务全部重启。

在启动 turbine 的时候,就能看到控制台的输出信息了:

然后浏览器访问:http://127.0.0.1:9099/turbine.stream

 

然后打开 turbine 服务的监控中心地址:http://127.0.0.1:9099/hystrix

输入:http://127.0.0.1:9099/turbine.stream

进入聚合监控页面:

OK,可以看到集群里的微服务相关请求信息了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值