SkyWalking 6.x 安装、调试与 Java Agent 探针接入实战指南

发布时间:2026/10/6 15:49:25

SkyWalking 6.x 安装、调试与 Java Agent 探针接入实战指南 文档教程技术博客【免费下载链接】Linux-Tutorial《Java 程序员眼中的 Linux》项目地址https://gitcode.com/gh_mirrors/li/Linux-Tutorial点击查看免费下载SkyWalking 是 Apache 基金会下的开源 APMApplication Performance Monitoring系统。本篇技术指南以《Java 程序员眼中的 Linux》仓库中的 SkyWalking-Install-And-Settings.md 为核心系统梳理 SkyWalking 6.1 的源码构建、IntelliJ IDEA 运行与 Debug、OAP Server 与 UI 启动、Java Agent 探针接入IDEA / jar / Docker 三种方式以及部署到服务器等完整链路。读完本文你将能够独立完成 SkyWalking 从环境准备、编译构建到业务应用无侵入接入的全流程实操并对 APM 选型背景与探针工作原理有清晰认知。一、OpenAPM 生态与选型背景在开始安装之前先理解 SkyWalking 所处的 APM 生态背景这有助于明确它的定位与价值。OpenAPM 工具全景社区维护的 OpenAPM landscape 汇总了市面上绝大多数 APM 相关工具可作为选型时的横向对比清单。OpenTracing 标准目前最活跃的分布式链路追踪标准是一套与具体实现解耦的 API 规范多数主流 APM 产品都与之兼容。当下活跃的开源方案Jaeger由 CNCF 托管的分布式追踪系统源于 Uber 开源实践SkyWalkingApache 顶级项目聚焦于服务端 APM同时支持 Java Agent 无侵入探针与多种存储后端。SkyWalking 的差异化优势在于其 Java Agent 探针可在不修改业务代码的前提下自动采集调用链、指标与日志关联信息且内置大量主流框架的自动埋点支持。原文档也明确指出国内常用的组件目前看来都支持了这对 Java 技术栈为主的团队尤其友好。版本背景说明本文内容基于原文档撰写时点2019-05的SkyWalking 6.1版本。彼时官网推荐通过源码构建出包并推荐 Docker 镜像方式部署。后续大版本如 8.x、9.x在 UI 端口、存储选型、配置项上有所演进本文保留 6.1 的完整实操细节同时会在文中标注关键差异点供读者对照。二、前置环境准备JDK 8、Maven 3 与 Elasticsearch根据原文档抽取的核心结论SkyWalking 6.1 的源码构建与运行依赖如下至少需要 JDK 8 Maven 3OAP Server、Agent、Web UI 均为 Java 工程源码构建必须满足此环境需要 Elasticsearch 作为存储后端通过查看源码依赖的 Elasticsearch 客户端包确认当时支持5.x 和 6.x两个大版本Elasticsearch 与 SkyWalking 所在服务器的时间必须保持一致否则会导致时间戳错位、数据聚合异常。建议通过 NTP 等时间同步手段统一集群内时钟仓库另有 NTP.md 可参考。2.1 环境准备可参考的仓库资料本仓库恰好收录了完整的 JDK、Maven、Elasticsearch 安装资料可配套使用组件仓库文档一键安装脚本JDK 8JDK-Install.md含 CentOS 卸载自带 OpenJDK、tar 解压安装、环境变量配置install_jdk_online.sh、install_jdk_offline_to_bash.shMaven 3Maven-Install-And-Settings.mdinstall_maven_offline_to_bash.shElasticsearch 5.x / 6.xElasticsearch-Base.mdDocker 单节点部署、CentOS RPM 安装、系统参数调优—其中 Elasticsearch-Base.md 提供了两种典型部署方式可直接对接 SkyWalkingDocker 方式文档给出了 5.6.8 与 6.7.2带 ik 分词两套docker-compose.yml示例核心配置为cluster.nameelasticsearch、network.host0.0.0.0、xpack.security.enabledfalse并将 9200/9300 端口映射到宿主机RPM 方式CentOS 7文档强调至少 2G 内存、JDK 1.8 起步并给出fs.file-max65535、vm.max_map_count262144写入/etc/sysctl.conf以及/etc/security/limits.conf中的nofile、memlock限制调整这些系统级参数正是 Elasticsearch 生产运行的关键调优项。实操提示Elasticsearch 5.x 与 6.x 的索引类型/映射行为有差异SkyWalking 6.1 内部会针对版本差异做适配直接使用文档支持的 5.x/6.x 均可若升级 SkyWalking 到 7.x则需按新版要求选用 6.x 及以上版本。三、从源码构建 SkyWalking原文档推荐通过源码构建出包这也是官网当时的主推方式。构建命令如下cd skywalking/ git submodule init git submodule update mvn clean package -DskipTests要点说明git submodule 必须初始化SkyWalking 工程通过 submodule 管理部分第三方依赖与生成的协议代码跳过这两步会导致编译失败-DskipTests跳过测试用例执行加速构建若需要验证构建产物完整可用可去掉该参数构建时间会显著增加构建完成后Java Agent 的产物路径为skywalking/apm-sniffer/apm-agent/target/skywalking-agent.jar后续探针接入会反复用到。四、基于 IntelliJ IDEA 直接运行与 Debug将 SkyWalking 源码导入 IntelliJ IDEA 后可以直接以源码方式启动 OAP Server 与 UI便于 Debug 理解其内部运行机制。这是阅读源码、二次开发最推荐的路径。4.1 将生成代码目录标记为 Sources RootSkyWalking 依赖 gRPC、ANTLR4、OAL 等代码生成框架构建后生成的代码需要手工标记为 IDEA 的源码目录Sources Root否则 IDE 无法解析相关类。gRPC 自动生成代码protobuf 目录需要标记grpc-java与java两个子目录/skywalking/apm-protocol/apm-network/target/generated-sources/protobuf /skywalking/oap-server/server-core/target/generated-sources/protobuf /skywalking/oap-server/server-receiver-plugin/receiver-proto/target/generated-sources/protobuf /skywalking/oap-server/exporter/target/generated-sources/protobufANTLR4 自动生成代码/skywalking/oap-server/generate-tool-grammar/target/generated-sourcesOALObservability Analysis Language自动生成代码/skywalking/oap-server/generated-analysis/target/generated-sources操作方式在 IDEA 的 Project 面板中右键对应目录 → Mark Directory as → Sources Root。若目录为空请先确认已执行mvn clean package -DskipTests完成代码生成。4.2 启动 OAP ServerOAP ServerObservability Analysis Platform是 SkyWalking 的后端聚合分析服务负责接收 Agent 上报的数据、完成指标聚合与链路存储。编辑配置/skywalking/oap-server/server-starter/src/main/resources/application.yml该文件包含 Elasticsearch 连接信息地址、端口、索引前缀等按实际环境修改即可默认配置中storage部分选定 Elasticsearch 作为存储实现core部分配置 gRPC/HTTP 接收端口gRPC 默认 11800、HTTP 默认 12800。启动类/skywalking/oap-server/server-starter/src/main/java/org/apache/skywalking/oap/server/starter/OAPServerStartUp.java启动观察第一次启动会自动创建 540 个左右的 Elasticsearch 索引库按天分片的时间序列索引因此首次启动耗时明显偏长属正常现象耐心等待即可。4.3 启动 UI 项目启动类/skywalking/apm-webapp/src/main/java/org/apache/skywalking/apm/webapp/ApplicationStartUp.java访问地址http://127.0.0.1:8080默认账号用户名admin密码adminUI 启动后即可看到服务拓扑、调用链追踪、指标面板等视图。在接入 Agent 并产生流量之前界面数据为空属正常现象。版本差异提示SkyWalking 8.x 起 UI 与 OAP Server 合并发布默认 UI 端口调整为 8080 之外的独立端口且application.yml结构大幅调整本文的目录结构与 6.1 对应升级使用时请以对应版本官方文档为准。五、Java Agent探针接入Java Agent 是 SkyWalking 实现无侵入埋点的核心组件。业务服务通过-javaagent参数加载skywalking-agent.jar在 JVM 启动阶段完成字节码增强自动采集 HTTP、RPC、数据库、消息队列等调用链数据并通过 gRPC 上报到 OAP Server。原文档整理了三种接入方式IDEA 调试、jar 包运行、Docker 容器。5.1 引入 apm-toolkit-trace 依赖可选增强探针本身无需修改业务代码即可工作若希望在代码中手动埋点自定义 Span、标记业务标签、获取 traceId需要引入 toolkit 依赖。原文档给出的是 Maven 坐标以 6.1.0 为例!--SkyWalking start-- !-- https://mvnrepository.com/artifact/org.apache.skywalking/apm-toolkit-trace -- dependency groupIdorg.apache.skywalking/groupId artifactIdapm-toolkit-trace/artifactId version6.1.0/version /dependency !--SkyWalking end--5.2 常用注解与 API 示例原文档给出了一个典型的 Controller 埋点示例完整展示了Trace、ActiveSpan.tag、TraceContext.traceId()的配合使用Trace ApiOperation(tags {用户系统管理-用户管理-用户列表}, value 查询所有用户列表, notes 查询所有用户列表) RequestMapping(value /list, method RequestMethod.GET) ResponseBody public ListSysUser list() { ListSysUser sysUserList sysUserService.findAll(); ActiveSpan.tag(一共有数据, sysUserList.size() 条); log.info(当前 traceId{}, TraceContext.traceId()); return sysUserList; }逐行解读Trace将当前方法标记为一个可追踪的 Span链路中的一个节点。Trace支持在任意方法上使用探针会在方法进入/退出时自动生成 Span 并关联上下文ActiveSpan.tag(key, value)向当前 Span 写入自定义标签用于在链路查询时快速定位业务信息如上例记录返回数据条数TraceContext.traceId()获取当前调用链的全局 traceId可写入业务日志实现日志 ↔ 链路关联检索更多 toolkit 注解如Tag、Tags、Span等可参考官方文档《Application-toolkit-trace》此处仅保留原文档实战示例。5.3 方式一IntelliJ IDEA 项目调试在 IDEA 中启动 Demo 工程时于VM options中加入探针参数-javaagent:/你自己的路径/skywalking-agent.jar -Dskywalking.agent.application_codemy_app_001 -Dskywalking.collector.backend_servicelocalhost:11800参数逐项说明参数含义说明-javaagent:path加载探针路径指向构建产物skywalking/apm-sniffer/apm-agent/target/skywalking-agent.jar或解压目录agent/skywalking-agent.jar-Dskywalking.agent.application_code应用编码在 UI 中用于区分不同业务应用如my_app_001-Dskywalking.collector.backend_serviceOAP 后端地址默认 11800 是 gRPC 接收接口Agent 通过该端口上报数据配置完成后启动应用请求带有Trace的 Controller 接口稍等片刻即可在 UI 界面看到该应用的调用链与指标统计。5.4 方式二jar 包方式Spring Boot 可执行 jar 在服务器上运行时同样只需在java命令前追加探针参数java -javaagent:/你自己的路径/skywalking-agent.jar -Dskywalking.collector.backend_servicelocalhost:11800 -Dskywalking.agent.application_codemy_app_002 -jar my-project-1.0-SNAPSHOT.jar对比 IDEA 方式两者参数完全一致差别仅在于application_code用于区分不同实例。此方式适合已通过mvn package产出 jar 的常规部署流程。5.5 方式三Docker 方式容器化场景下将探针目录与业务 jar 一起打进镜像并通过环境变量注入参数。原文档给出了完整 Dockerfile 与运行命令DockerfileFROM openjdk:8-jre-alpine LABEL maintainertanjian20150101gmail.com ENV SW_AGENT_NAMESPACEjava-agent-demo \ SW_AGENT_COLLECTOR_BACKEND_SERVICESlocalhost:11800 COPY skywalking-agent /apache-skywalking-apm-bin/agent COPY target/sky-demo-1.0-SNAPSHOT.jar /demo.jar ENTRYPOINT java -javaagent:/apache-skywalking-apm-bin/agent/skywalking-agent.jar -jar /demo.jar构建并运行docker build -t hello-demo . docker run -p 10101:10101 -e SW_AGENT_NAMESPACEhello-world-demo-005 -e SW_AGENT_COLLECTOR_BACKEND_SERVICES127.10.0.2:11800 hello-demo要点说明环境变量与系统属性的对应关系SkyWalking Agent 支持通过环境变量覆盖同名配置项——SW_AGENT_NAMESPACE对应-Dskywalking.agent.namespace命名空间隔离SW_AGENT_COLLECTOR_BACKEND_SERVICES对应-Dskywalking.collector.backend_service后端地址示例中为127.10.0.2:11800。因此docker run时可通过-e动态覆盖镜像内的默认值实现一套镜像多环境复用若 OAP Server 不在本机请将SW_AGENT_COLLECTOR_BACKEND_SERVICES指向宿主机可达的 OAP 地址容器内不能直接使用localhost探针目录skywalking-agent应预先解压并置于构建上下文即agent/skywalking-agent.jar所在目录。六、构建 jar 部署在服务器若目标环境不具备 IDE 或 Docker可直接构建出可部署的完整包上传服务器运行。构建命令与第三节一致cd skywalking/ git submodule init git submodule update mvn clean package -DskipTests构建产物位于各模块的target/目录下部署服务器时只需关注OAP Server 包oap-server/server-starter/target/下生成的发行包内含application.yml与启动脚本Web UI 包apm-webapp/target/下生成的 webapp 发行包Agent 包apm-sniffer/apm-agent/target/skywalking-agent.jar连同agent/config、agent/plugins等目录整体分发到业务服务器。服务器部署的核心是保证 Agent 能通过网络访问 OAP Server 的 gRPC 端口默认 11800且 OAP Server 能访问 Elasticsearch默认 9200。首次上线建议按Elasticsearch → OAP Server → UI → Agent的顺序逐层验证连通性。七、告警配置原文档为告警配置提供了官方参考入口指向 SkyWalking 官方中文博客的《监控微服务》系列文章。结合 SkyWalking 6.1 的机制告警功能的核心思路是在 OAP Server 侧基于告警规则对聚合后的指标进行阈值判断命中后触发 Webhook/邮件等通知规则定义在 OAP Server 的告警配置文件alarm-settings.yml位于发行包的config/目录中。由于告警规则的具体字段如指标名、比较符、阈值、周期、静默窗口随版本演进差异较大且原文档未给出完整示例这里不展开虚构细节——建议以当前使用版本的官方告警文档为准先基于默认规则文件改阈值再逐步增加自定义指标告警。八、总结本文完整覆盖了 SkyWalking 6.1 从选型、环境准备、源码构建、IDEA 调试到三种 Agent 接入方式的全部实操路径核心要点可概括为依赖关系清晰JDK 8 Maven 3 构建Elasticsearch 5.x/6.x 存储且服务器间时间必须一致调试链路完整IDEA 中标记 gRPC/ANTLR4/OAL 生成目录为 Sources Root即可启动OAPServerStartUp与ApplicationStartUp进行断点调试首次启动约创建 540 个索引库属正常现象接入方式灵活-javaagent参数 -Dskywalking.agent.application_code-Dskywalking.collector.backend_servicelocalhost:11800三件套在 IDEA、jar、Docker 三种场景下通用无侵入与手动埋点并存纯 Agent 即可完成自动采集apm-toolkit-trace的Trace/ActiveSpan/TraceContext则提供精细化埋点能力。本仓库还提供了 TOC.md 与 SUMMARY.md 两份目录索引以及配套的 JDK-Install.md、Maven-Install-And-Settings.md、Elasticsearch-Base.md、NTP.md 等环境建设文档可与本文配合构成完整的 SkyWalking 落地工具箱。赞分享文档教程技术博客【免费下载链接】Linux-Tutorial《Java 程序员眼中的 Linux》项目地址https://gitcode.com/gh_mirrors/li/Linux-Tutorial点击查看免费下载相关推荐Apache SkyWalking Java Agent 安装与使用指南Apache SkyWalking Java Agent 安装与使用指南 一、项目介绍 1.1 基本概述 SkyWalking是一款用于微服务、云原生及容器化环PX4 使用 SEGGER J-Link 调试探针从驱动安装到 GDB 硬件调试实战指南PX4 使用 SEGGER J Link 调试探针从驱动安装到 GDB 硬件调试实战指南 导读 本文以 PX4 Autopilot 官方文档 docs/en/嵌入式物联网机器人自动驾驶智能硬件SkyWalking Java Agent 安装到 WebSphere 时抛出 IllegalStateException 的排查与修复指南SkyWalking Java Agent 安装到 WebSphere 时抛出 IllegalStateException 的排查与修复指南 本文是 SkyWa可观测性后端微服务云原生上一篇从0到1开发Treemacs扩展构建个性化Emacs树形视图下一篇使用yomotsu/camera-controls实现3D模型自适应视口功能详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/6 15:44:24

ltemlb负载均衡实战:多链路调度、等开销配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 15:44:24

Lantronix交换机光模块选型:SFP/QSFP速率波长与兼容性全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 16:44:28

C#实现U盘禁用守护进程:插拔检测、强制禁用与自我保活

干这行的人多少都遇到过这种需求:公司内网机器要封U盘、机房设备只允许指定U盘读写、或者就是单纯不想让人随便往服务器上插东西。市面上现成的管控软件不是价格离谱,就是策略太死板,弄来弄去还不如自己用C#写一个。今天这篇就聊一个完整的C#…

2026/10/6 16:44:28

Python实现π的10000位精确计算:任意精度与算法选型实战解析

在技术社区搜pi,跳出来多半是树莓派、PI控制器、pi agent这类内容,真要搜“计算pi小数点后10000位”,反而会掉进一堆年代久远的代码片段里,有的用C语言全篇宏定义,有的只贴出几千位就说“已算到一万位”。我自己动手完…

2026/10/6 16:44:28

Flutter鸿蒙化迁移实战:用dia依赖注入实现无感多端适配

最近 Flutter 社区里最热闹的事,就是鸿蒙原生适配这条赛道。我手头正好有个老项目,核心依赖注入层用的是 dia 这个轻量库,趁热把它迁到了 OpenHarmony 的 Flutter 分支上。整个过程比想象中顺,但也踩了不少教科书里不会写的坑。这…

2026/10/6 16:44:28

用百度AI手势识别打造程序员专属视力自测工具

每天盯着屏幕八小时起步,下班还要接着刷手机,干眼、视疲劳、飞蚊症几乎成了程序员标配。大家都爱拿"钛合金狗眼"自嘲,可体检报告上一行"建议进一步检查"还是让人心里发虚。我前阵子实在不想再靠猜来判断自己的眼睛状态&a…

2026/10/6 16:44:28

OpenClaw接入飞书实战:从WSL2环境到Agent消息互通

前阵子折腾了一整天,终于把OpenClaw接进了飞书。最开始以为就是走个webhook转发的事,结果先是WSL2环境验证失败,后来又卡在事件订阅的回调超时上,等真能收消息了,机器人又半天不吭声。那感觉就是每一步都在给下一层的坑…

2026/10/6 16:39:28

Spring容器动态代理Bean注入实战:从JDK到CGLIB全解析

最近在项目里要做中间件改造,碰上一个逃不开的需求:在Spring容器启动过程中,把一批接口动态代理成Bean,然后注册进容器里。这种东西单看标题就一行字,真做起来全是细节,从代理方式选型到注册时机的控制&…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑