一、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