goreplay流量重放备忘
go 环境
下载go
https://studygolang.com/dl
解压
tar -C /usr/local -zxvf go1.21.4.linux-amd64.tar.gz
环境变量
vim /etc/profile
export GOROOT=/usr/local/go
export PATH=
P
A
T
H
:
PATH:
PATH:GOROOT/bin
source /etc/profile
验证
go version
goreplay环境
下载
https://github.com/buger/gor/releases
看自己要的版本,mac用下面
https://github.com/buger/goreplay/releases/download/1.3.3/gor_1.3.3_mac.tar.gz
官方代码
https://github.com/buger/goreplay/tree/master
中间件示例
https://github.com/buger/goreplay/blob/master/examples/middleware/echo.java
核心参数
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 :终端输出
模式
- 服务转服务
- 服务转文件
- 文件转服务
性能
指定流量的百分比
——200%表示放大2倍
过滤
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 ——允许的请求方法
请求重写
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
中间插件 middleware
sudo ./gor --input-raw :38085 --output-file ‘requests-%Y-%m-%d-%H.gor’ --middleware /Users/zlding/work/tools/goreplay/goreplay-1.0-SNAPSHOT-jar-with-dependencies.jar --output-http-track-response --input-raw-track-response
sudo ./gor --input-raw :38085 --output-file ‘requests-%Y-%m-%d-%H.gor’ --middleware “java -cp .:lib/commons-codec-1.15.jar -verbose cn.dails.Echo” --output-http-track-response --input-raw-track-response
sudo ./gor --input-raw :38085 --output-file ‘requests-%Y-%m-%d-%H.gor’ --middleware “python3 echo.py” --output-http-track-response --input-raw-track-response
sudo ./gor --input-raw :38085 --output-file ‘requests-%Y-%m-%d-%H.gor’ --middleware “java -jar goreplay-1.0-SNAPSHOT-jar-with-dependencies.jar” --output-http-track-response --input-raw-track-response
./gor --input-raw :38085 --output-file=requests.gor
./gor --input-raw :38085 --output-file=requests-%Y-%m-%d-%H.gor --http-disallow-url /static
./gor --config-file=service_to_file.yml
–output-http-track-response and --input-raw-track-response
mvn clean compile assembly:single
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home
PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
export JAVA_HOME
export PATH