press-monster-java/README.md

93 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
```