Moonbox实现流量录制和回放

引言

书接上文,Jvm-Sandbox-Repeater是一款强大的流量录制和回放工具,但是使用过程中还是会遇到各种各样的问题。MoonBox 是 vivo 开源的一款基于 JVM-Sandbox-Repeater 的 无侵入式流量录制与回放平台,能够实现自动化测试、线上问题复现和业务监控。本文结合官方文档与社区实践,详解本地快速部署方案,涵盖 Docker 极简模式与生产级常规部署两种场景。

一、环境准备

1. 基础依赖
  • 操作系统:Linux/macOS/Windows(需支持 Docker)
  • 内存:建议 8GB+(Docker 部署)或 16GB+(常规部署)
  • 存储:预留 20GB 空间(用于 ES 数据存储)
  • 软件包
    • Docker 20.10+(Docker 部署必选)
    • JDK 1.8+(常规部署必选)
    • MySQL 5.7+(存储配置元数据)
    • Elasticsearch 7.16.2(推荐版本,存储流量数据)
2. 端口规划
服务默认端口说明
MoonBox-Server9999前端访问端口
MySQL3306元数据存储
Elasticsearch9200流量数据存储
Agent-Jetty12568Agent 通信端口

二、Docker 快速部署(适合体验)

1. 拉取镜像与启动
# 克隆仓库
git clone https://github.com/vivo/MoonBox.git
cd MoonBox/docker

# 启动容器(x86架构)
docker-compose -f docker-compose.yml up -d

# ARM架构(如 M1/M2 Mac)
docker-compose -f docker-compose-arm64.yml up -d

该命令将自动启动包含 MySQL、ES 和 MoonBox 服务的容器集群;目前官方Dockerfile中,mysql使用的是5.7,如果遇到下载失败的问题,可以使用bitnami/mysql,修改mysql目录下的Dockerfile文件,如下图所示(此操作步骤意在快速体验moonbox,所以就不说升级driver驱动重新打包、修改dockerfile这类方式了)
请添加图片描述
看到如下日志说明运行成功:
请添加图片描述

2. 访问控制台

浏览器打开 http://localhost:9999,使用默认账号 admin/moonbox 登录。控制台提供流量录制任务管理、回放配置及结果分析功能。如下图所示:
请添加图片描述

三、常规部署(适合生产环境)

1. 数据库初始化
-- 创建 MySQL 数据库
CREATE DATABASE moonbox DEFAULT CHARSET utf8mb4;
-- 执行初始化脚本(脚本位于项目 /script 目录)
mysql -u root -p moonbox < moonbox.sql
2. 修改配置文件

配置文件位于 moonbox-server/src/main/resources/application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/moonbox?useSSL=false
    username: root
    password: 123456
elasticsearch:
  hosts: localhost:9200
  username: elastic
  password: elastic
3. 编译与启动服务
# 后端服务编译
cd moonbox-server
mvn clean package -Dmaven.test.skip=true
# 启动服务
java -jar target/moonbox-server-1.0.0.jar

# 前端编译(需 Node.js 14+)
cd moonbox-web
npm install
npm run build
# 部署生成的 dist 目录至 Nginx

四、Agent 接入与流量录制

1. 目标应用挂载 Agent
# 下载 agent(版本需与 Server 一致)
wget https://github.com/vivo/MoonBox/releases/download/v1.0.0/moonbox-agent.tar.gz

# 挂载到 Java 进程
java -javaagent:/path/to/moonbox-agent.jar \
     -Dmoonbox.app.name=myapp \
     -Dmoonbox.server=http://{moonbox-server host![请添加图片描述](https://i-blog.csdnimg.cn/direct/dceaef3b398443828857320c2da3ba04.png)
}:9999 \
     -jar your-app.jar
2. 创建录制任务
  1. 进入控制台 流量录制新增模板
  2. 填写应用名、采样率(如 10%)、录制时长
  3. 选择需录制的接口(支持 HTTP/Dubbo 等协议)
    请添加图片描述
3. 回放验证
  1. 流量回放 中选择录制任务
  2. 配置回放次数、Mock 策略(如 DB 调用使用录制结果)
  3. 查看回放成功率及差异报告,定位代码问题

五、注意事项与优化

  1. 性能调优

    • 调整 ES 分片数(建议 index.number_of_shards=3
    • 限制单任务最大录制流量(避免内存溢出)
    • 启用 Agent 心跳检测防止僵尸进程
  2. 安全配置

    # 启用 HTTPS(修改 application.yml)
    server:
      ssl:
        enabled: true
        key-store: classpath:keystore.p12
        key-store-password: changeit
    
  3. 插件扩展

    • 自定义插件需实现 RepeaterSPI 接口
    • 参考 moonbox-plugin-dubbo 模块开发适配中间件

结语

通过上述步骤,可在本地快速构建 MoonBox 流量分析平台。其 无侵入特性 尤其适合复杂微服务场景的自动化回归测试。建议结合 官方文档 探索进阶功能如分布式压测、业务监控告警等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值