1. 程式人生 > 其它 >流量回放工具

流量回放工具

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