goreplay

goreplay简介

gorreplay是一个开源的网络监控工具。可以用来记录流量,并用于回放、负载测试、监控分析等。参考文档:https://www.cnblogs.com/sunsky303/p/9072871.html

流量录制

#捕获9003端口的请求和响应输出到stdout(用于调试)
#--input-raw-track-response用于捕获response,不加这个参数只捕获请求
#--input-raw-override-snaplen将捕获的snaplen覆盖为64k,避免抓取的流量被截断
./gor --input-raw :9003 --output-stdout --input-raw-track-response --input-raw-override-snaplen
# 捕获9003端口的请求和响应并转发到x.x.x.x:9003服务上,output-http可以跟多个,会将相同的流量转发到多个端点
./gor --input-raw :9003 --output-http http://x.x.x.x:9003 --input-raw-track-response --input-raw-override-snaplen
# 捕获9003端口的请求和响应输出到文件request.gor
./gor --input-raw :9003 --output-file request.gor --input-raw-track-response --input-raw-override-snaplen
# 捕获9003端口的请求和响应输出到文件文件格式以当前日期命名
./gor --input-raw :9003 --output-file requests-%Y-%m-%d.log --input-raw-override-snaplen
#捕获9003端口的请求和响应输出到屏幕,并在请求header中添加‘Real-IP:真实ip’的字段,如果有则覆盖原有值
./gor --input-raw :9003 --output-stdout --input-raw-track-response --input-raw-override-snaplen --input-raw-realip-header "Real-IP"
# --output-file-append gor默认以块的形式写入文件,默认256块(可以理解为256次请求),使用此参数可以将所有的块写入一个文件,文件大小限制默认32mb
./gor --input-raw :9003 --output-file request.gor --input-raw-track-response --input-raw-override-snaplen --output-file-append
#--output-file-size-limit和--output-file-queue-limit选项设置块限制,默认值分别为32mb、256,文件大小可以使用kb、mb、gb限制,只想要大小限制,你可以设置--output-file-queue-limit为0,反之亦然
#设置录制的文件大小为40kb,不限制块大小
./gor --input-raw :9003 --output-file request.gor --input-raw-override-snaplen --output-file-size-limit 40kb --output-file-queue-limit 0

流量回放

# 从request_0.gor文件中回放请求到x.x.x.x:9003服务上
./gor --input-file request_0.gor --output-http http://x.x.x.x:9003
# --input-file-loop从request_0.gor文件中回放请求到x.x.x.x:9003服务上,循环回放
./gor --input-file request_0.gor --output-http http://x.x.x.x:9003 --input-file-loop
# 以2倍的速度从requests-2022-01-18_0.log文件中回放请求到x.x.x.x:9003服务上
./gor --input-file 'requests-2022-01-18_0.log|200%' --output-http http://x.x.x.x:9003
#模拟从文件requests-2022-01-18_0.log回放查看需要回放需要执行多长时间
#--input-file-dry-run模拟从数据源读取并不真正的回放,可以获得回放的时间、回放的请求数等等
./gor --input-file ./gortest/requests-2022-01-18_0.log --output-http http://x.x.x.x:9003 --input-file-dry-run
#这里使用了通配符*,gor会自动读取匹配的所有文件并按照时间自动排序
./gor --input-file './gortest/requests-2022-01-18_*' --output-http http://x.x.x.x:9003 --input-file-dry-run

中间件

./gor --input-raw :9003 --middleware "python3 middleware.py" -output-http http://x.x.x.x:9003 --input-raw-track-response --input-raw-override-snaplen
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容