流量拷贝工具-goreplay介绍

简介

goreplay 是一个开源工具,抓取生产环境流量,并使用真实流量持续测试系统。

goreplay

它使用raw-socket 抓取系统流量,并根据指定的url ,将流量进行转发。

使用

依赖

如果你只是为了测试,可以使用

gor file-server :8000 

快速启动一个文件服务器,用来测试

安装

可以到 https://github.com/buger/gor/releases 下载特定版本及平台的二进制包,并放在可执行目录下。 (当前支持的系统有 Windows, Linux x64 and Mac OS)

抓取数据包

现在,可以简单地运行 sudo ./gor –input-raw :8000 –output-stdout 将抓到的包打印到终端,进行查看。

它的原理有点类似于tcpdump

重放数据包

现在,可以试着将抓取的数据包往另外一个服务器重放了。启动另一个文件服务:gor file-server :8001

使用–output-http 替换 –output-stdout 参数,并加上要转发的url,就可以将抓到的包转发到目的地址了。

sudo ./gor --input-raw :8000 --output-http="http://localhost:8001"

向第一个服务发起几个请求,可以看到,请求也到达了第二个服务。成功!

保存以及重放

可以使用 –output-file 以及–input-file 来保存数据包,以及重放数据包:

保存数据包到文件requests.gor:

sudo ./gor --input-raw :8000 --output-file=requests.gor

重放数据包

./gor --input-file requests.gor --output-http="http://localhost:8001"

总结

现在,可以安全地将生产环境的数据包保存下来,并在测试环境进行重放了。

这样做的好处是,可以低成本地获得生产环境的真实测试用例。这些测试用例,也可以为测试人员提供参考。以便写出比较符合生产的测试用例。

附录-gor 常用命令

简单的 HTTP 流量复制:

gor –input-raw :80 –output-http "http://staging.com"

HTTP 流量复制频率控制:

gor –input-tcp :28020 –output-http "http://staging.com|10"

HTTP 流量复制缩小:

gor –input-raw :80 –output-tcp "replay.local:28020|10%"

HTTP 流量记录到本地文件:

gor –input-raw :80 –output-file requests.gor

HTTP 流量回放和压测:

gor –input-file "requests.gor|200%" –output-http "staging.com"

HTTP 流量过滤复制:

gor –input-raw :8080 –output-http staging.com –output-http-url-regexp ^www.
humboldt Written by:

humboldt 的趣味程序园