公众号关注 「奇妙的 Linux 世界」
设为「星标」,每天带你玩转 Linux !
当前互联网服务现状是调用关系复杂,服务模块多,流量复杂,业务复杂,对于测试团队构造请求成本比较高,如果还按照传统的人工构造请求参数,相对目前复杂业务场景来说太单一了。
今天给大家分享一个线上流量录制 和流量回放平台 -- MoonBox。
项目简介
Moonbox(月光宝盒)是一个无侵入的线上流量录制 和流量回放平台。
简单介绍一下什么是流量录制与回放?
流量录制回放就是通过记录线上流量,在测试环境回放,来发现系统是否能够正常运行,降低代码变动带来的风险。
流量录制把一次请求的入参、出参、下游RPC 等存储起来,流量回放是把录制数据还原,重新发起请求。

项目优势
通过流量录制可以很容易形成丰富的测试用例
回放线上流量更真实,人工编写的测试用例可能会有考虑不周的地方
回放线上流量可以复现生成环境中问题,完美解决了本地好使的,线上问题不知道怎么产生的。
没有代码侵入,通过代理对流量录制和回放的增强
可视化调用链路
定时录制和回放,减少人工操作
接口维度的流量管理
详细展示流量详情,包括请求的参数、响应参数 和 该请求的 子调用详情
项目原理
月光宝盒平台由 moonbox-agent 和 moonbox-server组成。
moonbox-agent
agent(基于动态字节码增强技术实现)动态代理到目标进程上,提供流量录制和回放的增强。
moonbox-server
server 主要是做后台配置,保持录制的数据,同时为 agent提供接口。
流量录制
通过JVM-Sandbox的BEFORE、RETRUN、THROW事件机制拦截关键调用位置获取流量入参、出参,实现流量录制。

流量回放
agent 启动后从服务端 拉取流量去分发到对应接口做回放。

快速体验
下载完代码后,在工程下的docker文件夹 下,执行如下命令:
# x86架构下
docker-compose -f docker-compose.yml up
# arm架构下
docker-compose -f docker-compose-arm64.yml up
启动后,在浏览器输入 http://127.0.0.1:9999/ ,即可访问月光宝盒平台。
配置流量录制

流量回放
在录制处回放

更多操作细节参考官网文档,这里了不起就不过多赘述了~
项目地址
https://github.com/vivo/MoonBox
本文转载自:「开源小分队」,原文:https://url.hi-linux.com/mUdN3,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。
最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。
你可能还喜欢
点击下方图片即可阅读
如何基于 Harbor 和 Registry 实现大规模镜像管理分发
点击上方图片,『美团|饿了么』外卖红包天天免费领
更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!