一、Gor简介
Gor 是一款go语言实现的简单的http流量复制工具,它的主要目的是使你的生产环境HTTP真实流量在测试环境和预发布环境重现。只需要在 LB 或者 Varnish 入口服务器上执行一个进程,就可以把生产环境的流量复制到任何地方,完美解决了 HTTP 层实时流量复制和压力测试的问题。对比在Nginx通过编写lua脚本进行流量拷贝要更加简单便捷,下载解压后就可马上使用。
二、Gor安装
安装包下载地址:https://github.com/buger/goreplay/releases
下载完成后,将解压后的goreplay文件复制到/usr/bin下,就可以开始使用了
三、使用方法
1.基础HTTP流量复制
将本机上80端口的流量全部复制到192.168.0.100的8080端口
goreplay --input-raw :80 --output-http 'http://192.168.0.100:8080'
2.HTTP流量复制频率控制
将本机上80端口的流量复制到192.168.0.100的8080端口,每秒请求不超过10个
goreplay --input-tcp :80 --output-http "http://192.168.0.100:8080|10"
将本机上80端口的流量复制到192.168.0.100的8080端口,每秒请求不超过总数的10%
goreplay --input-raw :80 --output-http "http://192.168.0.100:8080|10%"
3.HTTP流量复制输出到文件
goreplay --input-raw :80 --output-file requests.log
4.通过HTTP流量回放进行压力测试
goreplay --input-file 'request.gor|200%' --output-http 'http://192.168.0.100:8080'
5.过滤指定url,进行HTTP流量复制
goreplay --input-raw :80 --output-http 'http://192.168.0.100:8080' --http-original-host --output-http-url-regexp test
6.过滤请求头,进行HTTP流量复制
goreplay --input-raw :80 --output-http 'http://192.168.0.100:8080' --http-allow-header api-version:^1\.0\d
7.过滤http方法,进行HTTP流量复制
goreplay --input-raw :80 --output-http "http://192.168.0.100:8080" --http-allow-method GET --http-allow-method OPTIONS
8.将HTTP流量进行url重写后再复制
goreplay --input-raw :80 --output-http 'http://192.168.0.100:8080' --http-rewrite-url /v1/user/([^\\/]+)/ping:/v2/user/$1/ping