流量回放工具

1.tcpcopy

需要三台服务器

一台线上服务器 一台测试服务器 一台辅助服务器 ,辅助服务器的作用是以免将测试服务器的响应打到线上服务器上去

下载安装

https://github.com/session-replay-tools/tcpcopy

http://github.com/session-replay-tools/intercept

线上服务器安装tcpcopy

解压后

cd tcpcopy

./configure

make && make install

辅助服务器安装intercept

cd intercept

./configure

make && make install

/usr/local/tcpcopy/sbin/tcpcopy -x 80-172.16.1.25:80 -s 172.16.1.24 -c 172.16.100.x -d -C 4 -l /var/log/tcpcopy.log

将80端口收到的流量复制到测试机ip 172.16.1.25的80端口,并设置辅助机的ip地址为172.16.1.24,且将复制过去的流量中的源地址统一更改为172.16.100.x,这样做的好处是我们在测试机上可以直接针对整个更改后的网段设置一条路由即可。

2.goreplay

下载 https://github.com/buger/goreplay

进入目录go build,完成后会有一个可执行文件 goreplay

1. 转发(改成你需要的ip和端口)
./goreplay --input-raw :8080 --output-http "http://192.168.1.100:6660"

2. 保存到文件
./goreplay --input-raw :8080 --output-file “requests.gor“

3. 保存到文件,添加内容到相同文件
./goreplay --input-raw :8080 --output-file requests.txt --output-file-append

4. 从文件转发
./goreplay --input-file requests.txt --output-http "http://192.168.1.100:6660"
5. 只允许转url regexp
./goreplay --input-raw :8080 --output-http staging.com --http-allow-url /api

6. 转发到本机tcp(适用于nginx upstream的情况)

需要打开2个goreplay
./goreplay --input-raw :1029 --output-tcp "localhost:28020"
./goreplay --input-tcp :28020 --output-file "request.gor"

 7. 循环+流量放大

 ./goreplay --input-file "oo01_0.log|1000%" --output-http "http://xxx.cn" --input-file-loop

8.控制流量

 ./goreplay –input-tcp :28020 –output-http “http://staging.com|10″

以回放oms流量为例
再10.10.10.10 上回放流量到127.0.0.1 上
./goreplay --input-raw :9008 --output-http "http://127.0.0.1:9008"
监控日志看到有流量打过来
[root@s1 /data/www/oms/log]# tail -f application.log.202202141900

3.nginx的mirror

ngx_http_mirror_module模块,利用mirror模块,业务可以将线上实时访问流量拷贝至其他环境,基于这些流量可以做版本发布前的预先验证

4.日志回放

最简单的就是直接日志回放

tail -f access.log  | fgrep xxx | fgrep GET |awk '{print $7}' sed 's/xxx/127.0.0.1/g' xargs -I{} curl -H"host:xxx" {}

 

https://www.jianshu.com/p/8df317dbf653

https://blog.csdn.net/qq_40093255/article/details/117227229

posted @ 2022-04-21 17:52  枯木逢春  阅读(282)  评论(0编辑  收藏  举报