如何入门使用jvm-sandbox-repeater进行流量录制回放工具的服务部署?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1700个文字,预计阅读时间需要7分钟。
趋于当前技术不断更新、产品功能多元化和流量回弹热度攀升的背景下,测试团队也提出采用阿里的开源流量回弹工具——jvm-sandbox-repeater。我个人先尝试了一番,效果还不错。
趋于当前技术不断更新、产品功能多元化之下,流量回放的热度也是越来越高。
在前一段时间,测试团队也提到阿里开源的流量回放工具 jvm-sandbox-repeater
我个人就先尝试一下,期间还是遇到一些问题,通过咨询和度娘的帮助下,整体功能的使用流程是跑通了。
jvm-sandbox-repeater简介在聊之前,我们先来了解下jvm-sandbox-repeater,其实在官网上也有详细的介绍,这里就直接搬官网的吧
jvm-sandbox-repeater是JVM-Sandbox生态体系下的重要模块,它具备了JVM-Sandbox的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。
目标人群-
线上有个用户请求一直不成功,我想在测试环境Debug一下,能帮我复现一下吗?
-
压测流量不知道怎么构造,数据结构太复杂,压测模型也难以评估,有什么好的办法吗?
-
不想写接口测试脚本了,我想做一个流量录制系统,把线上用户场景做业务回归,可能会接入很多服务系统,不想让每个系统都进行改造,有好的框架选择吗?
-
我想做一个业务监控系统,对线上核心接口采样之后做一些业务校验,实时监控业务正确性。
如果你有以上的想法或需求,jvm-sandbox-repeater 都将是你的不二选择方案;框架基于JVM-Sandbox,拥有JVM-Sandbox的一切特性,同时封装了以下能力:
- 录制/回放基础协议,可快速配置/编码实现一类中间件的录制/回放
- 开放数据上报,对于录制结果可上报到自己的服务端,进行监控、回归、问题排查等上层平台搭建
-
通用录制/回放能力
无侵入式录制HTTP/Java/Dubbo入参/返回值录制能力(业务系统无感知)
基于TTL提供多线程子调用追踪,完整追踪一次请求的调用路径
入口请求(HTTP/Dubbo/Java)流量回放、子调用(Java/Dubbo)返回值Mock能力 -
快速可扩展API实现
录制/回放插件式架构
提供标准接口,可通过配置/简单编码实现一类通用插件 -
standalone工作模式
无需依赖任何服务端/存储,可以单机工作,提供录制/回放能力
-
业务快速回归
基于线上流量的录制/回放,无需人肉准备自动化测试脚本、准备测试数据 -
线上问题排查
录制回放提供"昨日重现"能力,还原线上真实场景到线下做问题排查和Debug
动态方法入参/返回值录制,提供线上快速问题定位 -
压测流量准备
0成本录制HTTP/Dubbo等入口流量,作为压测流量模型进行压测 -
实时业务监控
动态业务监控,基于核心接口数据录制回流到平台,对接口返回数据正确性进行校验和监控
建议在Linux环境下使用,windows下可能会出现路径不一致的情况,我使用的环境如下:
- Linux
- JDK 1.8
- Maven 3.2
- Mysql 5.7
如果只是想简单体验下,则用不到Mysql,可以参考官网的用户手册
安装repeater 克隆源码git clone github.com/alibaba/jvm-sandbox-repeater.git
进入到jvm-sandbox-repeater项目bin目录下,执行命令./install-repeater.sh
界面展示如下所示,则说明安装成功
修改repeater配置路径为:~/.sandbox-module/cfg/repeater.properties
主要修改2个值
- repeat.standalone.mode,修改为false
# 是否开启脱机工作模式
repeat.standalone.mode=false
- url主机地址和端口,这个按需修改,每个人的服务器地址都不一样
# 录制消息投递地址
broadcaster.record.url=127.0.0.1:8001/facade/api/record/save
# 回放结果投递地址
broadcaster.repeat.url=127.0.0.1:8001/facade/api/repeat/save
# 回放消息取数据地址
repeat.record.url=127.0.0.1:8001/facade/api/record/%s/%s
# 配置文件拉取地址
repeat.config.url=127.0.0.1:8001/facade/api/config/%s/%s
说到这里,可能会疑问,为什么要修改这2个配置?原因如下:
repeat.standalone.mode控制 repeater 是否以 standalone 模式启动,我们要与 repeater-console 结合使用,所以配置为false
其他 url 都是与 repeater-console 交互的 url,所以需要将 host 改为本地启动的 repeater-console 的地址
修改console配置console配置路径:/jvm-sandbox-repeater/repeater-console/repeater-console-start/src/main/resources/
# 使用本地数据源进行测试
console.use.localCache =false
# 示例回放地址(工程使用需要维护repeater插件的ip:port替换,指定ip发起回放)
repeat.repeat.url=%s:%s/sandbox/default/module/%s:%s/sandbox/default/module/%s:%s/sandbox/default/module/ip:端口/regress/index.htm,访问页面,进入到如下测试页面,说明通过url访问也ok,服务没有问题
该页面总共三个菜单:在线流量、配置管理、在线模块
先简单讲下,在线流量就是录制的请求,配置管理就是针对要录制的应用配置,在线模块就是sandbox的心跳。后续文章会继续讲到,今天先简单描述下。
问题 ./install-repeater.sh执行失败执行命令,出现如下报错
解决办法:
通过命令 vim install-repeater.sh 将 tar xz 中的 z 删除即可,因为该压缩包没有用gzip格式压缩,所以不用加z参数
启动repeater项目提示空指针,报错如下所示:
解决办法:
module_config、module_info表中的appname和environment不一致,修改为一致即可
以上就是今天分享的内容,下期再会。
本文共计1700个文字,预计阅读时间需要7分钟。
趋于当前技术不断更新、产品功能多元化和流量回弹热度攀升的背景下,测试团队也提出采用阿里的开源流量回弹工具——jvm-sandbox-repeater。我个人先尝试了一番,效果还不错。
趋于当前技术不断更新、产品功能多元化之下,流量回放的热度也是越来越高。
在前一段时间,测试团队也提到阿里开源的流量回放工具 jvm-sandbox-repeater
我个人就先尝试一下,期间还是遇到一些问题,通过咨询和度娘的帮助下,整体功能的使用流程是跑通了。
jvm-sandbox-repeater简介在聊之前,我们先来了解下jvm-sandbox-repeater,其实在官网上也有详细的介绍,这里就直接搬官网的吧
jvm-sandbox-repeater是JVM-Sandbox生态体系下的重要模块,它具备了JVM-Sandbox的所有特点,插件式设计便于快速适配各种中间件,封装请求录制/回放基础协议,也提供了通用可扩展的各种丰富API。
目标人群-
线上有个用户请求一直不成功,我想在测试环境Debug一下,能帮我复现一下吗?
-
压测流量不知道怎么构造,数据结构太复杂,压测模型也难以评估,有什么好的办法吗?
-
不想写接口测试脚本了,我想做一个流量录制系统,把线上用户场景做业务回归,可能会接入很多服务系统,不想让每个系统都进行改造,有好的框架选择吗?
-
我想做一个业务监控系统,对线上核心接口采样之后做一些业务校验,实时监控业务正确性。
如果你有以上的想法或需求,jvm-sandbox-repeater 都将是你的不二选择方案;框架基于JVM-Sandbox,拥有JVM-Sandbox的一切特性,同时封装了以下能力:
- 录制/回放基础协议,可快速配置/编码实现一类中间件的录制/回放
- 开放数据上报,对于录制结果可上报到自己的服务端,进行监控、回归、问题排查等上层平台搭建
-
通用录制/回放能力
无侵入式录制HTTP/Java/Dubbo入参/返回值录制能力(业务系统无感知)
基于TTL提供多线程子调用追踪,完整追踪一次请求的调用路径
入口请求(HTTP/Dubbo/Java)流量回放、子调用(Java/Dubbo)返回值Mock能力 -
快速可扩展API实现
录制/回放插件式架构
提供标准接口,可通过配置/简单编码实现一类通用插件 -
standalone工作模式
无需依赖任何服务端/存储,可以单机工作,提供录制/回放能力
-
业务快速回归
基于线上流量的录制/回放,无需人肉准备自动化测试脚本、准备测试数据 -
线上问题排查
录制回放提供"昨日重现"能力,还原线上真实场景到线下做问题排查和Debug
动态方法入参/返回值录制,提供线上快速问题定位 -
压测流量准备
0成本录制HTTP/Dubbo等入口流量,作为压测流量模型进行压测 -
实时业务监控
动态业务监控,基于核心接口数据录制回流到平台,对接口返回数据正确性进行校验和监控
建议在Linux环境下使用,windows下可能会出现路径不一致的情况,我使用的环境如下:
- Linux
- JDK 1.8
- Maven 3.2
- Mysql 5.7
如果只是想简单体验下,则用不到Mysql,可以参考官网的用户手册
安装repeater 克隆源码git clone github.com/alibaba/jvm-sandbox-repeater.git
进入到jvm-sandbox-repeater项目bin目录下,执行命令./install-repeater.sh
界面展示如下所示,则说明安装成功
修改repeater配置路径为:~/.sandbox-module/cfg/repeater.properties
主要修改2个值
- repeat.standalone.mode,修改为false
# 是否开启脱机工作模式
repeat.standalone.mode=false
- url主机地址和端口,这个按需修改,每个人的服务器地址都不一样
# 录制消息投递地址
broadcaster.record.url=127.0.0.1:8001/facade/api/record/save
# 回放结果投递地址
broadcaster.repeat.url=127.0.0.1:8001/facade/api/repeat/save
# 回放消息取数据地址
repeat.record.url=127.0.0.1:8001/facade/api/record/%s/%s
# 配置文件拉取地址
repeat.config.url=127.0.0.1:8001/facade/api/config/%s/%s
说到这里,可能会疑问,为什么要修改这2个配置?原因如下:
repeat.standalone.mode控制 repeater 是否以 standalone 模式启动,我们要与 repeater-console 结合使用,所以配置为false
其他 url 都是与 repeater-console 交互的 url,所以需要将 host 改为本地启动的 repeater-console 的地址
修改console配置console配置路径:/jvm-sandbox-repeater/repeater-console/repeater-console-start/src/main/resources/
# 使用本地数据源进行测试
console.use.localCache =false
# 示例回放地址(工程使用需要维护repeater插件的ip:port替换,指定ip发起回放)
repeat.repeat.url=%s:%s/sandbox/default/module/%s:%s/sandbox/default/module/%s:%s/sandbox/default/module/ip:端口/regress/index.htm,访问页面,进入到如下测试页面,说明通过url访问也ok,服务没有问题
该页面总共三个菜单:在线流量、配置管理、在线模块
先简单讲下,在线流量就是录制的请求,配置管理就是针对要录制的应用配置,在线模块就是sandbox的心跳。后续文章会继续讲到,今天先简单描述下。
问题 ./install-repeater.sh执行失败执行命令,出现如下报错
解决办法:
通过命令 vim install-repeater.sh 将 tar xz 中的 z 删除即可,因为该压缩包没有用gzip格式压缩,所以不用加z参数
启动repeater项目提示空指针,报错如下所示:
解决办法:
module_config、module_info表中的appname和environment不一致,修改为一致即可
以上就是今天分享的内容,下期再会。

