jvm-sandbox-repeater环境搭建部署
Posted sysu_lluozh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了 jvm-sandbox-repeater环境搭建部署相关的知识,希望对你有一定的参考价值。
一、环境准备
当前仅支持mac或linux系统,安装包括repeater-console和repeater两个模块的安装
注:
在windows环境可能会遇到安装路径出错导致安装失败或者运行失败的情况
需要的中间组件:
- linux/Mac os
- jdk 1.8+
- maven 3.2+
- 数据库 mysql 5.7+
二、repeater-console安装与启动
2.1 下载源码
git clone https://github.com/alibaba/jvm-sandbox-repeater.git
2.2 数据库配置
- 位置:/repeater-console/repeater-console-start/src/main/resources/application.properties
# 本地mysql数据源测试
spring.datasource.url=jdbc:mysql://数据库IP/域名:数据库端口/数据库名?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=用户名
spring.datasource.password=密码
2.3 初始化数据库
repeater-console/repeater-console-dal/src/main/resources/database.sql
2.4 console源码问题修复
- console代码在idea中启动时,不会报错,但是使用jar包启动时,页面会报异常,需要做如下调整
- 位置 repeater-console/repeater-console-start/src/main/java/com/alibaba/repeater/console/start/controller/page/ReplayController.java
替换 return "/replay/detail"; 为 return "replay/detail";
解决跳转页面的问题
- 位置 repeater-console/repeater-console-start/src/main/java/com/alibaba/repeater/console/start/controller/test/RegressPageController.java
替换 return "/regress/index"; 为 return "regress/index";
解决跳转页面的问题
2.5 编译并启动console
# 在 repeater 项目根目录进行
mvn install -DskipTests && java -jar repeater-console/repeater-console-start/target/*.jar
三、repeater安装
3.1 下载源码
git clone https://github.com/alibaba/jvm-sandbox-repeater.git
3.2 修改配置文件
- 位置:jvm-sandbox-repeater/bin/repeater.properties
如果是本机器则配置成127.0.0.1或lcoalhost,如果是远程主机部署则配置成服务IP端口
# 录制消息投递地址
broadcaster.record.url=http://127.0.0.1:8001/facade/api/record/save
# 回放结果投递地址
broadcaster.repeat.url=http://127.0.0.1:8001/facade/api/repeat/save
# 回放消息取数据地址
repeat.record.url=http://127.0.0.1:8001/facade/api/record/%s/%s
# 配置文件拉取地址
repeat.config.url=http://127.0.0.1:8001/facade/api/config/%s/%s
# 心跳上报配置
repeat.heartbeat.url=http://127.0.0.1:8001/module/report.json
# 是否开启脱机工作模式
repeat.standalone.mode=false
# 是否开启spring advice拦截
repeat.spring.advice.switch=false
3.3 环境变量配置
启动参数中的 -Dapp.name=repeater -Dapp.env=daily
对应应用名和环境,是需要启动时添加的,不然jvm-sandbox启动后找不到对应的环境信息
代码中这个文件读取了这个环境变量信息
com.alibaba.jvm.sandbox.repeater.plugin.core.util.PropertyUtil getSystemPropertyOrDefault
通过代码知道可以通过在被测的jvm机器上设置环境变量设置应用名称和环境
3.4 编译repeater
# 在项目根目录下的bin目录中执行
cd bin
sh install-repeater.sh
在linux环境中执行可能会报如下错误:
编译失败后可以将repeater-stable-bin文件拷到对应目录~/.sandbox-module
下同样可行
文件下载路径下载路径, 下载后对应文件目录
此时可以将/cfg/repeater.properties
文件按照3.2 修改配置文件
中进行配置,修改console服务的ip和port
3.5 启动被测服务
# 下载源码
git clone https://github.com/spring-guides/gs-rest-service.git
# 在示例项目 clone 后的根目录中运行
cd complete
mvn install && java -jar target/*.jar
注: 如3.3 环境变量配置所说,启动方式也可以为:mvn install && java -jar -Dapp.name=repeater
-Dapp.env=daily target/*.jar
3.6 启动sandbox
sandbox的启动方法有两种,attach模式和agent模式
3.6.1 attach模式
# 启动命令
~/sandbox/bin/sandbox.sh -p ${被录制应用进程号} -P ${repeater启动端口}
# 关闭命令
~/sandbox/bin/sandbox.sh -S ${被录制应用进程号}
完整启动命令
sh ~/sandbox/bin/sandbox.sh -p `ps -ef | grep "target/gs-rest-service-0.1.0.jar" | grep -v grep | awk '{print $2}'` -P 12580
3.6.2 agent模式
java
-javaagent:${HOME}/sandbox/lib/sandbox-agent.jar=server.port=${repeater启动端口}\\;server.ip=0.0.0.0 \\
-Dapp.name=${录制应用名} \\
-Dapp.env=${录制环境} \\
-jar application.jar
agent模式下启动成功,但是在录制回放是无法连接对应的端口,通过server.port设置的端口无效
四、简单使用
4.1 页面
安装完成,进去前端页面:http://localhost:8001/online/search.htm
4.2 配置管理
应用名:unknown
环境名:unknown
{
"useTtl" : true,
"degrade" : false,
"exceptionThreshold" : 1000,
"sampleRate" : 10000,
"pluginsPath" : null,
"httpEntrancePatterns" : [ "^/greeting.*$" ],
"javaEntranceBehaviors" : [ {
"classPattern" : "hello.GreetingController",
"methodPatterns" : [ "greeting" ],
"includeSubClasses" : false
} ],
"javaSubInvokeBehaviors" : [],
"pluginIdentities" : [ "http", "java-entrance", "java-subInvoke", "mybatis", "ibatis" ],
"repeatIdentities" : [ "java", "http" ]
}
4.3 在线模块
查看在线模块,可以看到被监控信息
4.4 发送请求
curl -s 'http://localhost:8080/greeting'
curl -s 'http://localhost:8080/greeting?name=User'
4.5 在线流量
在线流量列表中可以看到录制的流量信息
4.5 流量回放
选择对应的流量进行回放
以上是关于 jvm-sandbox-repeater环境搭建部署的主要内容,如果未能解决你的问题,请参考以下文章
解密淘系精准回归底层技术JVM-Sandbox-Repeater
开源 | jvm-sandbox-repeater:阿里巴巴开源的基于 JVM-Sandbox 的录制/回放通用解决方案