SkyWalking 插件打包部署
介绍
SkyWalking插件开发完成后,需要经过打包和部署流程才能在生产环境中使用。本章将详细介绍如何将开发好的插件打包成JAR文件,并部署到SkyWalking探针中。通过本章学习,您将掌握完整的插件生命周期管理能力。
前置知识
建议先完成[SkyWalking插件开发基础]章节学习,了解插件开发的基本流程和规范。
插件打包流程
1. 项目结构规范
标准SkyWalking插件项目结构如下:
my-plugin/
├── pom.xml
├── src/
│ ├── main/
│ │ ├── java/org/apache/skywalking/apm/plugin/
│ │ └── resources/
│ │ └── skywalking-plugin.def
2. 配置pom.xml
确保pom.xml包含SkyWalking核心依赖和打包配置:
xml
<dependencies>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-agent-core</artifactId>
<version>${skywalking.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
3. 执行打包命令
在项目根目录执行Maven打包命令:
bash
mvn clean package
成功构建后会在target目录生成插件JAR文件,例如:
my-plugin-1.0.0.jar
插件部署方法
1. 部署到探针目录
将打包好的插件JAR文件复制到SkyWalking探针的plugins
目录:
bash
cp target/my-plugin-1.0.0.jar ${AGENT_HOME}/plugins/
目录结构示例:
skywalking-agent/
├── config/
├── logs/
├── plugins/
│ ├── my-plugin-1.0.0.jar
│ ├── ...其他官方插件
└── skywalking-agent.jar
2. 配置文件调整
在config/agent.config
中确保插件激活:
properties
plugin.myplugin.enabled=true
3. 启动应用
使用SkyWalking探针启动目标应用:
bash
java -javaagent:/path/to/skywalking-agent.jar -jar your-application.jar
实际案例:MySQL监控插件部署
假设我们开发了一个增强版MySQL监控插件:
- 打包后得到
mysql-enhanced-plugin-2.1.0.jar
- 部署到生产环境:
bash
# 停止应用
systemctl stop my-spring-app
# 部署插件
cp mysql-enhanced-plugin-2.1.0.jar /opt/skywalking/agent/plugins/
# 启动应用
java -javaagent:/opt/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=order-service \
-jar /opt/apps/order-service.jar
- 验证部署:
检查SkyWalking UI中MySQL监控指标是否包含新插件提供的数据维度。
常见问题排查
插件加载失败
如果插件未生效,检查:
- JAR文件是否在正确的plugins目录
- 插件文件名是否与
skywalking-plugin.def
中定义的名称匹配 - 查看agent日志
logs/skywalking-api.log
版本兼容性
确保插件版本与SkyWalking探针版本兼容,不匹配的版本可能导致:
- 类加载失败
- 监控数据异常
- 探针崩溃
总结
通过本章学习,您已经掌握了:
- SkyWalking插件的标准打包流程
- 插件部署到生产环境的方法
- 实际部署案例的操作步骤
- 常见问题的排查方法
进阶练习
- 尝试开发一个简单的HTTP请求拦截插件并完成完整部署流程
- 在测试环境中模拟插件版本冲突场景并解决问题
- 编写自动化部署脚本实现插件的CI/CD流程