SkyWalking 服务集成的核心方式 —— Java Agent 探针注入

SkyWalking 服务集成的核心方式 —— Java Agent 探针注入

下面我们对这一部分进行系统化、实战化讲解,帮助你真正掌握如何将 Java 应用接入 SkyWalking,实现无侵入式监控。


🧩 服务集成(探针部署)—— Java 应用接入指南

✅ 核心方式:Java Agent(字节码增强)

SkyWalking 对 Java 应用的监控主要通过 Agent(探针) 实现,采用 Java Agent + 字节码增强技术,在类加载时自动注入监控代码,无需修改业务代码,属于 低侵入甚至无侵入 的集成方式。


一、前置准备

1. 下载 SkyWalking 发行版(获取 Agent)

前往官网下载包含 Agent 的二进制包:

🔗 https://skywalking.apache.org/downloads/

选择最新稳定版本(如 9.7.0):

# 示例:下载并解压
wget https://downloads.apache.org/skywalking/9.7.0/apache-skywalking-apm-9.7.0.tar.gz
tar -xzf apache-skywalking-apm-9.7.0.tar.gz

解压后目录结构如下:

apache-skywalking-apm-bin/
├── agent/                    # ← Agent 核心目录
│   ├── skywalking-agent.jar
│   ├── activation/
│   ├── config/
│   └── plugins/
├── bin/
├── config/
└── webapp/

✅ 我们重点关注 agent/ 目录,尤其是 skywalking-agent.jar


二、接入步骤:启动时挂载 Agent

方法:在 java -jar 命令中添加 -javaagent 参数

java \
  -javaagent:/your/path/to/skywalking-agent/skywalking-agent.jar \
  -DSW_AGENT_NAME=my-service \
  -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=localhost:11800 \
  -jar your-application.jar

🔍 参数详解

参数说明是否必需
-javaagent指定 Agent JAR 路径✅ 必需
-DSW_AGENT_NAME设置服务名称(在 UI 中显示)✅ 建议设置
-DSW_AGENT_COLLECTOR_BACKEND_SERVICESOAP 服务地址(host:port)✅ 必需
-DSW_AGENT_SAMPLE_RATE采样率(0~10000,10000=100%)❌ 可选
-DSW_LOGGING_DIRAgent 日志输出目录❌ 可选

📌 默认配置文件:agent/config/agent.config,你也可以通过 -Dskywalking.agent.config 指定自定义配置文件。


💡 示例:完整启动命令

java \
  -javaagent:/opt/skywalking/agent/skywalking-agent.jar \
  -DSW_AGENT_NAME=order-service \
  -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.1.100:11800 \
  -DSW_AGENT_SAMPLE_RATE=10000 \
  -jar order-service.jar

✅ 启动后,应用会自动向 SkyWalking OAP 上报数据。


三、验证是否接入成功

  1. 访问 SkyWalking UI:http://localhost:8080
  2. 进入 “服务”(Services) 页面
  3. 查找你设置的服务名(如 order-service
  4. 发起一个请求(如调用 API)
  5. 查看是否有 调用链(Trace)指标数据 出现

✅ 成功标志:

  • 拓扑图中出现新服务节点
  • 调用链列表有数据
  • JVM 指标(内存、GC)可查看

四、Agent 工作原理(简要了解)

阶段说明
1. 类加载拦截使用 Instrumentation API 拦截类加载
2. 字节码增强在目标方法前后插入监控代码(如 Spring Controller、Dubbo 调用、JDBC)
3. 数据采集收集 Span、指标、JVM 信息
4. 上报 OAP通过 gRPC 协议发送到 SkyWalking OAP Server

🎯 支持的框架(无需额外配置):

  • Spring Boot / Spring MVC
  • Dubbo、gRPC、Feign
  • Tomcat、Jetty、Undertow
  • MySQL、PostgreSQL、Redis、Kafka
  • HTTP Client(OkHttp、HttpClient)

五、常见问题与排查

问题可能原因解决方案
服务未出现在 UIAgent 未加载或网络不通检查 -javaagent 路径、OAP 地址、防火墙
无调用链数据未触发请求或采样率太低发起请求,检查 -DSW_AGENT_SAMPLE_RATE
Agent 启动报错JDK 版本不兼容SkyWalking 9.x 支持 JDK 8+,建议使用 JDK 8/11/17
日志报 Cannot find collectorOAP 地址错误确保 SW_AGENT_COLLECTOR_BACKEND_SERVICES 正确
中文乱码日志编码问题agent/config/agent.config 中设置 logging.encoding=UTF-8

六、生产环境建议

项目建议配置
采样率生产环境可设为 1000(10%)或更低,避免性能开销
Agent 路径使用绝对路径,避免启动失败
OAP 地址使用内网 IP 或服务发现地址
日志目录单独指定,便于排查 Agent 自身问题
版本管理统一 Agent 版本,避免兼容性问题

七、其他部署方式(扩展了解)

方式说明
Kubernetes DaemonSet在 K8s 中通过 sidecar 或 initContainer 注入 Agent
镜像内置 Agent构建 Docker 镜像时将 Agent 打包进去
Jenkins/CICD 自动注入在发布脚本中动态添加 -javaagent 参数

示例:Dockerfile 中集成 Agent

COPY skywalking-agent /skywalking-agent
ENTRYPOINT ["java", "-javaagent:/skywalking-agent/skywalking-agent.jar", \
            "-DSW_AGENT_NAME=product-service", \
            "-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=oap:11800", \
            "-jar", "/app.jar"]

✅ 总结:Java 应用接入四步法

步骤操作
1️⃣ 下载获取 SkyWalking 发行版,提取 agent/ 目录
2️⃣ 配置设置服务名和 OAP 地址(通过 JVM 参数)
3️⃣ 启动使用 -javaagent 挂载探针
4️⃣ 验证在 UI 中查看服务、调用链、指标数据
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值