jck28 - 小柒 - gor流量录制回放

一, goreplay 介绍

  • GoReplay 是一个开源工具,用于捕获实时 HTTP 流量并将其重播到测试环境中,以便使用真实数据持续测试您的系统。 它可用于增加对代码部署、配置更改和基础架构更改的信心。
  • GoReplay 是一个开源的网络监控工具,可以记录您的实时流量,并将其用于跟踪、负载测试、监控和详细分析。
  • GoReplay 是一种创新的开源解决方案,它允许您捕获现有用户的活动并将其重新用于测试您的应用程序。使用 GoReplay,您可以执行跟踪、负载测试或详细分析和监控

二, goreplay 下载安装

2.1 下载路径:

2.2 安装解压

  • 将下载的包通过xftp传输到linux对应的文件目录下
  • 进行解压缩:tar -C /usr/local -zxvf go1.16.4.linux-amd64.tar.gz
  • 配置环境变量:
    • 打开profile文件: vim /etc/profile
    • 配置变量:
     export GOROOT=/usr/local/go
     export PATH=$PATH:$GOROOT/bin
    
    • 编译配置文件: source /etc/profile
    • 查看是否配置成功:go version

三, gor工具的使用

3.1 核心参数

  • input 参数

    • –input-raw :用来捕捉http流量,需要指定ip地址和端口
    • –input-file : 接收流量
    • –input-http :用来捕捉http流量,需要指定ip地址和端口
    • –input-tcp :将多个Goreplay实例获取的流量聚集到一个Goreplay实例
    • –input-raw-track-response
  • output 参数

    • –output-http :流量释放的对象server,需要指定IP地址和端口
    • –output-file : 录制流量时指定的存储文件
    • –output-tcp :将获取的流量转移至另外的Goreplay实例
    • –output-stdout :终端输出

3.2 监听模式 - 捕获服务器流量保存到本地

  • 捕捉prod环境的流量并通过终端输出 : sudo ./gor --input-raw :8000 --output-stdout
  • 捕捉prod环境的流量并保存至本地文件 :sudo ./gor --input-raw :8000 --output-file=requests.gor

3.3 转发模式 - 将捕获的流量转发到stage环境

  • 将prod环境的流量转发到stage环境: sudo ./gor --input-raw :8000 --output-http="http://localhost:8002"
  • 将prod环境存放的文件中的流量转发到stage环境服务器: gor --input-file requests.gor --output-http="http://localhost:8001"

3.4 性能模式

  • 指定流量的百分比,用来控制放大或者缩小流量: gor --input-file "requests.gor|200%" --output-http "staging.com" ——200%表示放大2倍

3.5 请求过滤

gor --input-raw :8080 --output-http staging.com  --http-allow-url /api                 ——指定URL,只同步/api路径下的请求

gor --input-raw :8080 --output-http staging.com  --http-disallow-url /api             ——同步除了/api路径下的其他请求

gor --input-raw :8080 --output-http staging.com \
    --http-allow-header api-version:^1\.0\d                    ——允许的header请求头

gor --input-raw :80 --output-http "http://staging.server" --http-allow-method GET \                                  
    --http-allow-method                                                 ——允许的请求方法

3.6 请求重写

gor --input-raw :8080 --output-http staging.com  --http-rewrite-url /v1/user/([^\\/]+)/ping:/v2/user/$1/ping
                                ——重写请求url,转发到staging.com环境时,url将变成重写的url
gor --input-raw :8080 --output-http staging.com --http-set-param api_key=1
                               ——重新设置url参数
gor --input-raw :80 --output-http "http://staging.server" --http-header "User-Agent: Replayed by Gor" \
    --http-header "Enable-Feature-X: true"
                               ——重新设置Header

3.7流量录制回放的作用

  • 利用流量同步实现预发布测试
  • 利用流量回放进行回归测试
  • 利用流量放大进行压力测试