2.7 KiB
2.7 KiB
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配置,用于生成分发包
添加新插件
- 在
press-monster-plugins下创建新的插件目录 - 实现
TransformerPlugin接口 - 在
META-INF/services中注册插件 - 更新
press-monster-assembly的依赖配置
清理构建
# 清理所有target目录
mvn clean
# 手动删除生成的agent目录
rm -rf press-monster-agent
mvn clean install