93 lines
2.7 KiB
Markdown
93 lines
2.7 KiB
Markdown
# 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 # 项目说明
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 构建项目
|
||
|
||
```bash
|
||
mvn clean package -DskipTests
|
||
```
|
||
|
||
构建完成后,会在项目根目录生成 `press-monster-agent` 目录,包含所有必要的agent文件。
|
||
|
||
### 使用Agent
|
||
|
||
将agent添加到Java应用启动参数:
|
||
|
||
```bash
|
||
java -javaagent:press-monster-agent/press-monster-agent.jar your-application.jar
|
||
```
|
||
|
||
### 配置
|
||
|
||
在 `agent.properties` 中可以配置:
|
||
|
||
```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` 的依赖配置
|
||
|
||
### 清理构建
|
||
|
||
```bash
|
||
# 清理所有target目录
|
||
mvn clean
|
||
|
||
# 手动删除生成的agent目录
|
||
rm -rf press-monster-agent
|
||
|
||
mvn clean install
|
||
|
||
|
||
``` |