SandBox-repeater安裝使用記錄
SandBox簡介
JVM沙箱容器,一種JVM的非侵入式執行期AOP
解決方案。
底層執行原理是結合了ASM
框架中JVM的agent、attach
機制注入目標程式
更詳細的介紹說明請參考:https://github.com/alibaba/jvm-sandbox
SandBox-Repeater簡介
基於SandBox
基礎上開發出的錄製回放Module
,目前該Module
已經支援的外掛型別有:http、dubbo、ibatis、mybatis、java、redis、hibernate、spring-data-jpa
獲取sandBox
1. 全量包下載址
http://sandbox-ecological.oss-cn-hangzhou.aliyuncs.com/sandbox-1.2.1-bin.tar
2. 原始碼下載地址
https://github.com/alibaba/jvm-sandbox
sandBox的完整專案的檔案目錄如下
獲取repeater
1.全量包下載址
http://sandbox-ecological.oss-cn-hangzhou.aliyuncs.com/repeater-stable-bin.tar
2.原始碼下載地址
https://github.com/alibaba/jvm-sandbox-repeater
repeater
的檔案目錄如下
安裝repeater
將repeater
目錄下所有檔案及資料夾拷貝到SandBox\sandBox-module
目錄下即可
啟動sandbox-repeater
1. 啟動目標程式 repeater-bootstrap
(作者提供的springboot demo
程式,該專案也包含了遠端錄製回放及配置相關的功能)
在repeater
目錄下執行
java -jar repeater-bootstrap.jar
2. 獲取目標程式程序id
由於目標程式啟動預設埠號為8001,所以使用以下命令獲取pid
netstat -ano |findstr 8001
3. 啟動sandbox
執行以下命令(這裡標紅的需要手動更改為當前執行環境的資訊)
java -Xms128M -Xmx128M -Xnoclassgc -ea -Xbootclasspath/a:javaHome\lib\tools. jar -jar sandboxHome\lib\sandbox-core.jar targetpid sandboxHome\lib\sandbox-agent.jar home=sandboxHome;token=timestamp;server.ip=0.0.0.0;server.port=1111;namespace=default;
修改資訊對照表
javaHome | 當前機器jdk安裝目錄 |
---|---|
sandboxHome | sandBox 的根檔案目錄 |
targetpid | 被注入的目標程序id,當前是12508 |
token | 任意時間戳字串 如:303515824929 |
server.port | sandBox-mgr服務繫結的埠號 |
server.ip | sandBox-mgr伺服器繫結IP(預設為本地ip) |
檢測啟動狀態
瀏覽器中輸入,檢視module列表是否存在repeater
http://127.0.0.1:1111/sandbox/default/module/http/sandbox-module-mgr/list
啟動成功則會議顯示如下資訊
錄製回放
1、請求如下介面
http://127.0.0.1:8001/regress/slogan
返回如下資訊
2、檢視請求的traceId
在repeater.log日誌中(log的路徑:C:\Users\userName\logs\sandbox\repeater
)找到對應的traceId
3、開始請求回放
方式一:
通過透傳traceId
(在header或者引數中帶上traceId
請求目標介面)
http://127.0.0.1:8001/regress/slogan?Repeat-TraceId-X=192168056001157528042944310001ed
方式二:
通過facadeApi
提供的介面進行回放
http://127.0.0.1:8001/facade/api/repeat/unknown/192168056001157528042944310001ed
不管何種回放,最終都會進行請求到具體的目標程式,並且請求引數都會與第一次保持一致。