前言

随着API的广泛应用,监控和分析API的精准性变得越来越重要。Apisix作为一个开源的API网关工具,提供了流量镜像的功能,可以将API请求实时复制到另一个后端服务中,以便于监控和分析。在本文中,我们将介绍Apisix的流量镜像功能,深入讨论如何配置和使用它来实现更精准的API监控和分析。我们将分享一些最佳实践和技巧,帮助您更好地利用Apisix的流量镜像功能来优化API监控和分析的精准性。

实现目标

image-20220713114623870

事前准备

  • 默认上游地址:10.249.0.121:31370
  • 镜像上游地址:10.249.0.121:31379

验证过程

使用的插件

使用Apisix官方插件《proxy-mirror | Apache APISIX® – Cloud-Native API Gateway

注意:镜像请求返回的响应会被忽略

配置

  • 默认情况下,镜像上游没有流量

    image-20220713114731990

  • 现对/store/v1/n进行流量镜像

    1. 在路由配置中,进入到插件配置,找到插件proxy-mirror

      image-20220713115133071

    2. 打开启动,后填写参数,参数说明如下

      名称 类型 必选项 默认值 有效值 描述
      host string 必须 指定镜像服务地址,例如:http://127.0.0.1:9797(地址中需要包含schema :http 或 https,不能包含 path 部分)
      path string 可选 指定镜像请求的路径。如不指定,当前路径将被使用。
      sample_ratio number 可选 1 [0.00001, 1] 镜像请求采样率
    3. 填写完成后,确认后提交即可生效

      image-20220713114823903

    4. 再次观察镜像上游日志,可以看到10.249.0.121:31379已经开始有流量了

      image-20220713114848724

关闭插件

在路由配置中,找到插件,将《启用》关闭即可

image-20220713114910998

附加功能

如果需要指定镜像的请求超时时间,可以在conf/config.yaml中的plugin_attr指定。

名称 类型 默认值 描述
connect string 60s 镜像请求到上游的连接超时时间
read string 60s 镜像请求到上游的读超时时间
send string 60s 镜像请求到上游的写超时时间

示例:

plugin_attr:
  proxy-mirror:
    timeout:
      connect: 2000ms
      read: 2000ms
      send: 2000ms