流量录制与回放工具--GoReplay

流量录制与回放⼯具--GoReplay
⽂章⽬录
1 简介
2 原理
3 使⽤场景
什么时候可以试⽤goreplay?
简单写⼏点场景,具体还是根据实际需求来。
Case 1
上线前在预发布环境,使⽤线上真实的请求,检查是否准备发布的版本,是否具备发布标准
格伦 莱斯Case 2
压⼒测试完成后,⽤线上真实的请求,加速后回放⾄测试环境,检查是否有报错等问题
Case 3
abtest
⽤线上的流量转发到预发,检查相同流量下⼀些指标的反馈情况,检查核⼼数据是否有改善、优化
等等
具体case还需要根据⾃⼰的需求,灵活改变。
case 4
系统重构时,复制真实线上环境流量到被测试环境进⾏回归,相当于在不影响业务的情况下提前上线检测系统潜在的问题。
case 5
可以将录制的流量作为⽤例管理起来进⾏⽇常⾃动化归回。
case6
录制线下开发和测试的第⼀次执⾏的⽤例,以后可以⽤第⼀次录制的⽤例反复回放测试,避免重复造⽤例,节省测试与开发时间。
优势
低成本:⽆需编写测试⽤例,通过流量录制形成丰富的测试⽤例。
⾼覆盖:⼀⽅⾯线上⼤量真实流量确保覆盖率,另⼀⽅⾯⽀持中间过程的验证,例如发送消息的内容、中间计算过程等等的全对象的对⽐验证,传统⼿⼯编写验证点很难实现。
代码侵⼊:是通过抓取http包获取的流量,不需要再代码中加⼊埋点。
钱运星
4 安装
4.1 使⽤root⽤户安装(开发和测试环境)
# mkdir -p /Data/apps/gor
黑街圣徒2# cd /Data/apps/gor
# wget github/buger/goreplay/releases/download/v1.0.0/gor_1.0.0_
# tar xvf  gor_1.0.0_
开启普通⽤户也可以取⽹络权限,默认只有root有权限抓取套接字。(CAP_NET_RAW:允许使⽤原始套接字,CAP_NET_ADMIN:允许执⾏⽹络管理任务)# setcap "cap_net_raw,cap_net_admin+eip" /Data/apps/gor/gor
建⽴gor⽇志⽬录
# mkdir -p /Data/logs/gor
授权所有⽤户都可以写
# chmod 777 /Data/logs/gor
4.2 使⽤root⽤户安装(⽣产环境)
⽣产环境,限制只有root和特定⽤户组有/Data/apps/gor/gor命令的执⾏权限。这⾥只允许root和gor组⽤户对/Data/apps/gor/gor有执⾏权限
# mkdir -p /Data/apps/gor
# cd /Data/apps/gor
# wget github/buger/goreplay/releases/download/v1.0.0/gor_1.0.0_
# tar xvf  gor_1.0.0_
新建gor⽤户
# useradd gor
设置gor⽤户密码
# passwd gor
修改/Data/apps/gor/gor⽤户为root,组为gor
# chown root:gor /Data/apps/gor/gor
只允许root和gor组⽤户对/Data/apps/gor/gor有执⾏权限,其他⽤户没有权限执⾏/Data/apps/gor/gor命令
# chmod 0750 /Data/apps/gor/gor
开启普通⽤户也可以抓取⽹络权限,默认只有root有权限抓取套接字。(CAP_NET_RAW:允许使⽤原始套接字,CAP_NET_ADMIN:允许执⾏⽹络管理任务)# setcap "cap_net_raw,cap_net_admin+eip" /Data/apps/gor/gor
建⽴gor⽇志⽬录
# mkdir -p /Data/logs/gor
只能gor⽤户可以写这个⽬录
# chown gor:gor /Data/logs/gor
精致的乐趣 法国完整版
信得药业4.3 安装其他说明
5 使⽤
5.1 抓取流量,实时终端显⽰
–input-raw :8000 表⽰监听http协议8000端⼝
–output-stdout 表⽰输出到终端
–input-raw-track-response 输出相应的http头部和包体信息
[dev@ws1.clevercode.stage.bj1 gor]$ /Data/apps/gor/gor --input-raw :8000 --output-stdout
Version: 1.0.0
1 e5abb903ce128b446bcb2967e3b7dc35c587a607 1557477540775912597
GET /health.json HTTP/1.1
Accept: application/json, application/*+json
User-Agent: Java/1.8.0_51
Host: localhost:8000
Connection: keep-alive
输出相应的http头部和包体信息
[dev@ws1.clevercode.stage.bj1 gor]$ /Data/apps/gor/gor --input-raw :8000 --output-stdout --input-raw-track-response
5.2 抓取流量到⽇志⽂件
5.2.1 录制
1 timeout 60 表⽰只录制60秒后⾃动停⽌(只记录请求头部)
# nohup timeout 60 /Data/apps/gor/gor --input-raw :8000 --output-file /Data/logs/ > /dev/null 2>&1 &
2 安装⼩时切割⽇志⽂件,并且开启⽇志追加模式,不会进⾏⽇志默认⼩分⽚
# nohup timeout 60 /Data/apps/gor/gor --input-raw :8000 --output-file /Data/logs/gor/basepost-%Y-%m-%d-%H.log --output-file-append > /dev/null 2>&1 & 3 安装⼩时切割⽇志⽂件,并且开启⽇志追加模式,不会进⾏⽇志默认⼩分⽚,.gz压缩⽂件格式
# nohup timeout 60 /Data/apps/gor/gor --input-raw :8000 --output-file /Data/logs/gor/basepost-%Y-%m-% --output-file-append > /dev/null 2>&1 & 4 timeout 60 表⽰只录制60秒后⾃动停⽌(请求头部+响应头部+包体)
# nohup timeout 60 /Data/apps/gor/gor --input-raw :8000 --output-file /Data/logs/ --input-raw-track-response > /dev/null 2>&1 &
查看⽇志⽂件,可以看到1分钟的录制,它切割成为了很多个⼩⽂件,每个⽂件⼤⼩约200K
5.3.2 回放
⽅式1:只回放单个⽂件
2012中国肿瘤登记年报# /Data/apps/gor/gor --input-file /Data/logs/gor/ --output-http "localhost:8000"
# /Data/apps/gor/gor --input-file /Data/logs/gor/ --output-http "localhost:8000"
# /Data/apps/gor/gor --input-file /Data/logs/gor/ --output-http "localhost:8000"
⽅式2:回放多个⽂件
合并⽂件
# cat /Data/logs/gor/basepost_*.gor > /Data/logs/
⼀起回放
# /Data/apps/gor/gor --input-file /Data/logs/ --output-http "localhost:8000"
⽅式3:指定测试环境的ip,加上指定的Host。(101.1.21.141:clevercode-test.bj1.info ,这加上–output-http-header “Host: intf.clevercode.info”,是因为录制的线下流量的⽇志⾥⾯的host是:localhost。但是测试机器上⾯nginx监听的8000端⼝需要指定 server_name intf.clevercode.info)【测试环境】
合并⽂件
# cat /Data/logs/gor/basepost_*.gor > /Data/logs/
⼀起回放
# /Data/apps/gor/gor --input-file /Data/logs/ --output-http "101.1.21.141:8000" --output-http-header "Host: intf.clevercode.info"
实时录制+播放
# sudo timeout 120 /Data/apps/gor/gor --input-raw :8000 --output-http "clevercode-test.bj1.info:8000" --output-http-header "Host: intf.clevercode.i nfo"
6 其他参考资料
技术交流
CleverCode是⼀名架构师,技术交流,咨询问题,请加CleverCode创建的qq(架构师俱乐部):517133582。加和腾讯,阿⾥,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!

本文发布于:2024-09-24 02:28:16,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/104298.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:流量   录制   是否   测试   头部   检查
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议