如何使用jvm-sandbox-repeater录制并回放流量?

2026-05-06 05:221阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1748个文字,预计阅读时间需要7分钟。

如何使用jvm-sandbox-repeater录制并回放流量?

在上一篇文章中,我们介绍了repeater服务部署,具体内容可见:流量录制工具jvm-sandbox-repeater入门篇——服务部署。今天,我们将基于上一文内容,进一步分享流量录制和回放的相关内容。

在上一篇文章中,把repeater服务部署介绍清楚了,详细可见:流量录制回放工具jvm-sandbox-repeater入门篇——服务部署

今天在基于上篇内容基础上,再来分享下流量录制和回放的相关内容。

启动被测服务 克隆源码

git clone github.com/chenhengjie123/gs-rest-service.git

这个项目是在看其他帖子看到的,是个开源的demo,我在这也引用下。

mvn install

进入到项目路径:/gs-rest-service/complete,使用mvn install命令,把项目中打好的包,放到本地仓库

出现如下界面,说明命令执行成功

在 target 目录下,可以看到,生成了一个jar包,如下所示

启动项目

在 target 目录下,使用命令 java -jar gs-rest-service-0.1.0.jar 启动项目,出现如下所示内容,项目启动成功

启动/关闭sandbox attach启动

先获取项目PID,有2种方式

方式一:在启动项目的时候,会展示PID,如上图所示

方式二:使用命令ps -ef|grep gs-rest-service-0.1.0.jar可以获得,我这里获取到的PID是:12836,如下所示

获取到项目PID后,到 sandbox 目录 /root/sandbox/bin下,使用命令./sandbox.sh -p 12836 -P 8002,运行命令后,出现如下内容,说明成功

也可以通过查看sandbox日志来确定,是否有启动成功,日志如下所示:

参数说明

  • p 被录制应用进程号
  • P repeater启动端口,这个每个人定义的都可以不同,一定是一个未占用的端口

attach 模式下,录制应用名和录制环境这两个参数都会被默认为 unknown

attach关闭

运行命令./sandbox.sh -p 12836 -S,出现如下内容,jvm-sandbox关闭成功

配置说明 repeater-logback.xml

该配置文件主要是控制 repeater 的日志打印路径地址以及打印等级。

一般会在需要调整日志等级的时候修改。

实际生效的配置是位于~/.sandbox-module/cfg 中的 repeater-logback.xml。

在项目的 bin 目录下也有一份 repeater-logback.xml,这份是在执行安装脚本的时候会被复制到~/.sandbox-module/cfg 下的。

每次修改这份配置,都需要重启 repeater 才能生效。

可以修改日志级别,默认是info

录制回放配置字段

这个配置,主要依赖com.alibaba.jvm.sandbox.repeater.plugin.domain.RepeaterConfig类,参考之前的博文,引用下字段配置说明,如下所示:

配置名 配置含义 参数说明 备注 pluginIdedentities 录制所使用的插件列表,配置了相应的插件名称,才能启用对应类别插件类别的录制 插件名称有效值有:"ip:port/regress/index.htm

服务启动,会有默认的配置,如下所示:

这里需要修改下,因为默认的配置,有些跟我们启动的项目不一样,直接编辑即可,字段说明在刚才已有讲解

如何使用jvm-sandbox-repeater录制并回放流量?

在线模块

以attach模式启动sandbox,环境和应用名都是unknown,如下所示:

流量录制

完成上述配置后,我们来录一个请求试下,访问:ip:port/greeting?name=yihuqingjiu,页面返回内容,可以在启动的项目下,查看对应日志,如下所示:

验证是否有录制成功,有2种方式

页面查看

直接通过repeater-console的在线流量页面查看,如果有刚操作的请求,说明录制成功,如下所示:

日志查看

查看repeater日志,有相对应的成功日志,如下所示:

相对应的,可以看下数据库是否正常落值,查看record表,是有对应数据的,如下所示:

上述方式验证,说明流量录制成功了

流量回放

流量回放的话,就直接点击已录制的请求,右侧有个回放按钮,直接点击即可。

我们来尝试一下,操作回放后,查看回放详情

看截图,看到回放的结果是失败的,为何失败呢,看下具体信息

因为id值不一致,所以判断回放失败,如下所示:

我自己写了个简单的demo,生成随机数的,代码中做了个mock,所以每次回放都是成功的

启动服务、修改配置、流量录制这些过程就不重复了,直接看下回放结果

回放详情如下所示:

回放差异对比如下所示:

问题

每次分享内容,都会遇到些问题,所以整理下。

录制不成功

录制遇到最大的一个问题,就是录制不成功,后面查日志和对比配置,是正则表达式写错的问题

repeater下的日志,如下所示:

日志中明确提示ignore this request

后面排查repeater-console页面配置管理中的正则表达式,发现正则写错,没有匹配到url的原因导致。

修改配置不生效

这个问题算是上一个问题的续集,为啥这么说呢。我之前把配置修改后,再次请求去录制,发现还是不成功

后来发现,修改repeater配置,需要重启项目,attach到sandbox,只有在attach的时候,才会重新去读取配置

服务启动顺序

这个点,也不算问题吧,但我也遇到过,就是服务启动的顺序。

先启动repeater-console服务

再启动被测服务

最后通过attach模式启动sandbox

如果中途有修改repeater-console配置项,上述步骤重来即可

以上就是今天分享的内容了,录制和回放只是以简单的demo来尝试了下,如果真的运用到实际项目当中,还得继续探索

我们下期再会

本文共计1748个文字,预计阅读时间需要7分钟。

如何使用jvm-sandbox-repeater录制并回放流量?

在上一篇文章中,我们介绍了repeater服务部署,具体内容可见:流量录制工具jvm-sandbox-repeater入门篇——服务部署。今天,我们将基于上一文内容,进一步分享流量录制和回放的相关内容。

在上一篇文章中,把repeater服务部署介绍清楚了,详细可见:流量录制回放工具jvm-sandbox-repeater入门篇——服务部署

今天在基于上篇内容基础上,再来分享下流量录制和回放的相关内容。

启动被测服务 克隆源码

git clone github.com/chenhengjie123/gs-rest-service.git

这个项目是在看其他帖子看到的,是个开源的demo,我在这也引用下。

mvn install

进入到项目路径:/gs-rest-service/complete,使用mvn install命令,把项目中打好的包,放到本地仓库

出现如下界面,说明命令执行成功

在 target 目录下,可以看到,生成了一个jar包,如下所示

启动项目

在 target 目录下,使用命令 java -jar gs-rest-service-0.1.0.jar 启动项目,出现如下所示内容,项目启动成功

启动/关闭sandbox attach启动

先获取项目PID,有2种方式

方式一:在启动项目的时候,会展示PID,如上图所示

方式二:使用命令ps -ef|grep gs-rest-service-0.1.0.jar可以获得,我这里获取到的PID是:12836,如下所示

获取到项目PID后,到 sandbox 目录 /root/sandbox/bin下,使用命令./sandbox.sh -p 12836 -P 8002,运行命令后,出现如下内容,说明成功

也可以通过查看sandbox日志来确定,是否有启动成功,日志如下所示:

参数说明

  • p 被录制应用进程号
  • P repeater启动端口,这个每个人定义的都可以不同,一定是一个未占用的端口

attach 模式下,录制应用名和录制环境这两个参数都会被默认为 unknown

attach关闭

运行命令./sandbox.sh -p 12836 -S,出现如下内容,jvm-sandbox关闭成功

配置说明 repeater-logback.xml

该配置文件主要是控制 repeater 的日志打印路径地址以及打印等级。

一般会在需要调整日志等级的时候修改。

实际生效的配置是位于~/.sandbox-module/cfg 中的 repeater-logback.xml。

在项目的 bin 目录下也有一份 repeater-logback.xml,这份是在执行安装脚本的时候会被复制到~/.sandbox-module/cfg 下的。

每次修改这份配置,都需要重启 repeater 才能生效。

可以修改日志级别,默认是info

录制回放配置字段

这个配置,主要依赖com.alibaba.jvm.sandbox.repeater.plugin.domain.RepeaterConfig类,参考之前的博文,引用下字段配置说明,如下所示:

配置名 配置含义 参数说明 备注 pluginIdedentities 录制所使用的插件列表,配置了相应的插件名称,才能启用对应类别插件类别的录制 插件名称有效值有:"ip:port/regress/index.htm

服务启动,会有默认的配置,如下所示:

这里需要修改下,因为默认的配置,有些跟我们启动的项目不一样,直接编辑即可,字段说明在刚才已有讲解

如何使用jvm-sandbox-repeater录制并回放流量?

在线模块

以attach模式启动sandbox,环境和应用名都是unknown,如下所示:

流量录制

完成上述配置后,我们来录一个请求试下,访问:ip:port/greeting?name=yihuqingjiu,页面返回内容,可以在启动的项目下,查看对应日志,如下所示:

验证是否有录制成功,有2种方式

页面查看

直接通过repeater-console的在线流量页面查看,如果有刚操作的请求,说明录制成功,如下所示:

日志查看

查看repeater日志,有相对应的成功日志,如下所示:

相对应的,可以看下数据库是否正常落值,查看record表,是有对应数据的,如下所示:

上述方式验证,说明流量录制成功了

流量回放

流量回放的话,就直接点击已录制的请求,右侧有个回放按钮,直接点击即可。

我们来尝试一下,操作回放后,查看回放详情

看截图,看到回放的结果是失败的,为何失败呢,看下具体信息

因为id值不一致,所以判断回放失败,如下所示:

我自己写了个简单的demo,生成随机数的,代码中做了个mock,所以每次回放都是成功的

启动服务、修改配置、流量录制这些过程就不重复了,直接看下回放结果

回放详情如下所示:

回放差异对比如下所示:

问题

每次分享内容,都会遇到些问题,所以整理下。

录制不成功

录制遇到最大的一个问题,就是录制不成功,后面查日志和对比配置,是正则表达式写错的问题

repeater下的日志,如下所示:

日志中明确提示ignore this request

后面排查repeater-console页面配置管理中的正则表达式,发现正则写错,没有匹配到url的原因导致。

修改配置不生效

这个问题算是上一个问题的续集,为啥这么说呢。我之前把配置修改后,再次请求去录制,发现还是不成功

后来发现,修改repeater配置,需要重启项目,attach到sandbox,只有在attach的时候,才会重新去读取配置

服务启动顺序

这个点,也不算问题吧,但我也遇到过,就是服务启动的顺序。

先启动repeater-console服务

再启动被测服务

最后通过attach模式启动sandbox

如果中途有修改repeater-console配置项,上述步骤重来即可

以上就是今天分享的内容了,录制和回放只是以简单的demo来尝试了下,如果真的运用到实际项目当中,还得继续探索

我们下期再会