前言
Apache SkyWalking 作为云原生可观测性领域的佼佼者,在微服务架构监控中扮演着至关重要的角色。然而,官方版本在安全性、镜像体积和功能扩展方面仍有优化空间。本文将分享一套完整的 SkyWalking 10.2.0 版本优化方案,从安全漏洞修复到镜像精简再到功能增强,全方位提升您的 SkyWalking 部署体验。
摘要
本文详细介绍了 SkyWalking 10.2.0+ 版本的全面优化方案,主要包括:
- 安全漏洞修复:解决官方版本中存在的多个高危安全漏洞
- 镜像体积优化:将官方镜像体积缩减65%以上,提升部署效率
- 功能增强:支持健康检查、自定义路径忽略等实用功能
- UI优化:定制化前端界面,提升用户体验
- 完整构建流程:从源码编译到镜像生成的全流程指南
无论您是 SkyWalking 的新手用户还是经验丰富的运维专家,本文都能帮助您构建更安全、更高效的可观测性平台。
最终效果对比
- 官方最新版本
- 漏洞修复
-
支持/skywalking/bin/swctl health 监控检查
官方这个版本是不支持的,我们依旧坚挺~
- 确认可用
通过对比可以清晰看到,我们的优化版本不仅修复了安全漏洞,还增强了监控能力,同时大幅减小了镜像体积,提升了部署效率和资源利用率。特别是增加了官方版本不支持的健康检查功能,让系统监控更加完善。
环境准备与源码获取
- JDK 11 (最新的代码要看最新的要求,注意不能使用JDK8,用错的话构建时也会有提示)
- Maven >=3.6.0
官方指南(必看) :github.com/apache/skyw…
mkdir -p /mnt/d/tmp/skywalking && cd /mnt/d/tmp/skywalking
#git clone --recurse-submodules https://github.com/apache/skywalking.git
git clone -b v10.2.0 --recurse-submodules https://github.com/apache/skywalking.git
精简镜像与服务优化
- 官方镜像
- 简化安全镜像
OAP服务优化
Dockerfile
ARG BASE_IMAGE='registry.cn-hangzhou.aliyuncs.com/earic/java:jre11.0.26-alpine3.21.3'
ARG SKYWALKING_CLI_VERSION
FROM apache/skywalking-cli:$SKYWALKING_CLI_VERSION as cli
ARG SKYWALKING_HOME='/skywalking'
WORKDIR $SKYWALKING_HOME
ARG DIST
COPY "$DIST" .
# 这里删,缓存不会带到$BASE_IMAGE里
RUN set -ex; \
tar -xzf "$DIST" --strip 1; \
rm -rf "$DIST"; \
rm -rf "config/log4j2.xml"; \
rm -rf "bin"; \
rm -rf "webapp"; \
rm -rf "agent";
FROM $BASE_IMAGE
ARG SKYWALKING_HOME='/skywalking'
WORKDIR $SKYWALKING_HOME
ENV PATH=$SKYWALKING_HOME/bin:$PATH
ENV JAVA_OPTS=" -Xms2G "
COPY --from=cli $SKYWALKING_HOME .
RUN set -ex; \
ls -alh; \
mkdir "bin"; \
rm -fr /var/cache/apk/* /usr/include /usr/share/man /tmp/*
COPY --from=cli /swctl ./bin
COPY log4j2.xml config/
COPY docker-entrypoint.sh .
RUN mkdir ext-config; \
mkdir ext-libs;
#非root--start --有安全需要再加,加了镜像会大100多M
# .......