3步定制SkyWalking Docker镜像:从零构建业务专属APM监控
当业务系统出现性能瓶颈时,通用APM工具往往难以满足定制化监控需求。本文将通过3个实战步骤,教你如何基于官方Docker镜像添加自定义插件,构建专属于业务场景的Application Performance Monitoring(应用性能监控)系统。
镜像定制基础:理解SkyWalking Docker架构
Apache SkyWalking的Docker镜像分为OAP(Observability Analysis Platform,可观测性分析平台)服务器和UI两个核心组件。官方镜像提供了基础运行环境,但自定义插件需要通过扩展目录实现集成。
核心目录结构
OAP镜像的插件扩展主要依赖两个关键目录:
ext-libs/:存放自定义插件的JAR文件ext-config/:存储插件所需的配置文件
这两个目录在Dockerfile中已预定义:
RUN mkdir ext-config; \
mkdir ext-libs;
官方构建流程
SkyWalking提供了完整的Docker构建链路,通过根目录的Makefile可以一键构建包含当前代码的镜像:
make docker
# 跳过测试加速构建
make docker SKIP_TEST=true
构建完成后会生成两个镜像:
skywalking/ui latest a14db4e1d70d 6 minutes ago 800MB
skywalking/oap latest 2a6084450b44 6 minutes ago 862MB
第一步:准备自定义插件文件
插件文件结构
自定义插件通常包含两类文件:
- 插件JAR包(例如:
custom-tracing-plugin.jar) - 插件配置文件(例如:
custom-plugin-config.yml)
建议创建如下本地目录结构管理插件文件:
skywalking-custom/
├── ext-libs/
│ └── custom-tracing-plugin.jar
└── ext-config/
└── custom-plugin-config.yml
插件开发规范
插件开发需遵循SkyWalking的扩展规范,具体可参考官方文档:
第二步:修改Dockerfile集成插件
扩展Dockerfile
通过在官方Dockerfile基础上添加插件复制指令,实现自定义插件的集成。创建Dockerfile.custom:
# 基于官方OAP镜像
FROM apache/skywalking-oap-server:latest
# 复制自定义插件到ext-libs
COPY skywalking-custom/ext-libs/*.jar /skywalking/ext-libs/
# 复制插件配置到ext-config
COPY skywalking-custom/ext-config/*.yml /skywalking/ext-config/
多阶段构建优化
对于生产环境,建议采用多阶段构建减少最终镜像体积:
# 构建阶段:编译插件
FROM maven:3.8.5-openjdk-11 AS builder
WORKDIR /plugin
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests
# 运行阶段:集成插件
FROM apache/skywalking-oap-server:latest
COPY --from=builder /plugin/target/*.jar /skywalking/ext-libs/
COPY custom-plugin-config.yml /skywalking/ext-config/
第三步:构建与验证定制镜像
构建定制镜像
执行以下命令构建包含自定义插件的OAP镜像:
docker build -f Dockerfile.custom -t skywalking-oap-custom:v1 .
启动验证环境
使用docker-compose快速搭建验证环境,创建docker-compose.custom.yml:
version: '3.8'
services:
oap:
image: skywalking-oap-custom:v1
ports:
- "12800:12800"
- "11800:11800"
environment:
- SW_STORAGE=elasticsearch
- SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200
depends_on:
- elasticsearch
elasticsearch:
image: elasticsearch:7.14.0
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms512m -Xmx512m
ui:
image: apache/skywalking-ui:latest
ports:
- "8080:8080"
environment:
- SW_OAP_ADDRESS=http://oap:12800
depends_on:
- oap
启动服务栈:
docker compose -f docker-compose.custom.yml up -d
验证插件加载
通过查看OAP日志确认插件是否成功加载:
docker logs -f $(docker ps -q --filter "name=oap") | grep "CustomTracingPlugin"
成功加载会显示类似日志:
2023-10-20 10:15:30,123 INFO [main] PluginManager - CustomTracingPlugin activated successfully.
高级配置:集成外部存储与集群
存储配置扩展
如需为自定义插件配置外部存储,可通过环境变量注入配置:
environment:
- SW_EXT_CONFIG_custom-plugin_storage=elasticsearch
- SW_EXT_CONFIG_es-nodes=elasticsearch:9200
集群部署方案
对于生产环境的集群部署,可参考官方docker-compose示例:
支持两种存储配置:
- Elasticsearch(默认)
docker compose --profile elasticsearch up
- BanyanDB(实验性)
docker compose --profile banyandb up
故障排查与最佳实践
常见问题解决
- 插件不加载:检查JAR文件权限,确保OAP用户可读取
- 配置不生效:验证配置文件是否正确挂载到
ext-config/ - 版本兼容性:插件版本需与SkyWalking核心版本匹配,参考版本变更记录
性能优化建议
- 对于大型插件,建议通过
JAVA_OPTS调整JVM参数:
ENV JAVA_OPTS=" -Xms4G -Xmx4G -XX:MetaspaceSize=256m"
- 生产环境建议使用集群模式部署,提高可用性
总结:打造业务专属监控能力
通过本文介绍的3个步骤,你已掌握SkyWalking Docker镜像的定制方法:
- 准备插件文件与目录结构
- 修改Dockerfile集成插件
- 构建验证镜像并部署
这种定制方案不仅保持了官方镜像的更新能力,还能满足业务特殊监控需求。更多高级插件开发技巧可参考:
- SkyWalking源码扩展指南
- OAP服务器配置文档
现在,你可以基于此方案构建包含业务埋点、定制告警、专项指标分析的全方位APM监控系统了!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00