跳到主要内容

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监控插件:

  1. 打包后得到mysql-enhanced-plugin-2.1.0.jar
  2. 部署到生产环境:
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
  1. 验证部署:

检查SkyWalking UI中MySQL监控指标是否包含新插件提供的数据维度。

常见问题排查

插件加载失败

如果插件未生效,检查:

  1. JAR文件是否在正确的plugins目录
  2. 插件文件名是否与skywalking-plugin.def中定义的名称匹配
  3. 查看agent日志logs/skywalking-api.log
版本兼容性

确保插件版本与SkyWalking探针版本兼容,不匹配的版本可能导致:

  • 类加载失败
  • 监控数据异常
  • 探针崩溃

总结

通过本章学习,您已经掌握了:

  • SkyWalking插件的标准打包流程
  • 插件部署到生产环境的方法
  • 实际部署案例的操作步骤
  • 常见问题的排查方法

进阶练习

  1. 尝试开发一个简单的HTTP请求拦截插件并完成完整部署流程
  2. 在测试环境中模拟插件版本冲突场景并解决问题
  3. 编写自动化部署脚本实现插件的CI/CD流程

附加资源