Go to file
kazusa af5a4a4ad7 test 2025-08-15 11:24:06 +08:00
.vscode debug conf 2025-07-23 17:13:31 +08:00
press-monster-assembly init 2025-07-15 22:23:28 +08:00
press-monster-common init 2025-07-15 22:23:28 +08:00
press-monster-core init 2025-07-15 22:23:28 +08:00
press-monster-plugins 测试RestController拦截,后续改为委托方式进行方法增强 2025-07-23 16:46:31 +08:00
press-monster-test 测试RestController拦截,后续改为委托方式进行方法增强 2025-07-23 16:46:31 +08:00
README.md test 2025-08-15 11:24:06 +08:00
pom.xml 测试RestController拦截,后续改为委托方式进行方法增强 2025-07-23 16:46:31 +08:00

README.md

Press Monster Agent

基于SkyWalking技术栈的压测平台Java Agent支持热插拔的RestController拦截插件。

项目结构

press-monster-java/
├── press-monster-common/               # 通用组件和插件框架
├── press-monster-core/                 # Agent核心和插件管理
├── press-monster-plugins/              # 插件管理目录
│   └── spring-plugins/                 # Spring框架相关插件
│       └── mvc-plugin/                 # Spring MVC拦截插件
├── press-monster-test/                 # 测试和demo项目
├── press-monster-assembly/             # 打包和分发配置
└── press-monster-agent/                # 构建输出目录(运行时生成)
    ├── press-monster-agent.jar         # 主agent文件
    ├── plugins/                        # 插件目录
    │   └── mvc-plugin-1.0.0-SNAPSHOT.jar
    ├── agent.properties                # 配置文件
    ├── agent-usage.md                  # 使用说明
    └── README.md                       # 项目说明

快速开始

构建项目

mvn clean package -DskipTests

构建完成后,会在项目根目录生成 press-monster-agent 目录包含所有必要的agent文件。

使用Agent

将agent添加到Java应用启动参数

java -javaagent:press-monster-agent/press-monster-agent.jar your-application.jar

配置

agent.properties 中可以配置:

# 插件目录
press.monster.plugin.directory=./plugins
# 插件热更新
press.monster.plugin.hotswap.enabled=false
# MVC插件开关
press.monster.plugin.mvc.enabled=true

核心特性

  • ByteBuddy字节码操作: 动态拦截和修改方法执行
  • 插件化架构: 支持SPI机制的插件加载
  • 热插拔支持: 运行时动态加载和卸载插件
  • RestController拦截: 自动收集REST API调用信息
  • SkyWalking兼容: 采用类似SkyWalking的目录结构和配置方式

开发说明

模块说明

  • press-monster-common: 提供插件框架、SPI机制、日志工具等通用组件
  • press-monster-core: Agent主程序负责插件管理和字节码增强
  • press-monster-plugins: 各种插件的实现,按框架分类
  • press-monster-test: 测试用例和演示应用
  • press-monster-assembly: Maven Assembly配置用于生成分发包

添加新插件

  1. press-monster-plugins 下创建新的插件目录
  2. 实现 TransformerPlugin 接口
  3. META-INF/services 中注册插件
  4. 更新 press-monster-assembly 的依赖配置

清理构建

# 清理所有target目录
mvn clean

# 手动删除生成的agent目录
rm -rf press-monster-agent

mvn clean install