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

你可能感兴趣的:(go,压力测试)