技术博客

阅读约 6 分钟

SkyWalking 也能 AI 智能化了

线上跑着 SkyWalking 的团队不必换 Agent——v0.1.3 原生监听 :11800,checkout 慢接口用 AI 问一句即出 traceId 与瓶颈 Span,日志可跳链路,Segment 数据完全同源。

0先说说 SkyWalking

很多 Java 团队的线上环境跑着 SkyWalking,Apache 顶级项目,Agent 挂上去往往能用很多年。常见情况是:

  • Java Agent 字节码增强,业务侧改动小
  • Segment 把一次请求里的 Span 和跨服务引用串在一起,查链路时结构清楚
  • 调用链、JVM 指标、日志可以走同一套上报
  • 文档和社区资料多,OAP + UI 的组合也经大量团队长期使用

Segment 进 OAP 之后,服务拓扑、Trace 列表、Span 树、JVM 曲线——这些是运维日常会打开看的界面,SkyWalking 在「把链路采上来」这一环做得比较实在。

SkyWalking 原生 UI:General 服务总览
SkyWalking 原生界面(:18080):服务列表、Apdex、响应时间、Endpoint 负载——运维日常打开的视图

团队真正花时间的,往往是在此之上读懂这些数据:告警来了没有 traceId,要在 Trace 列表里找代表性慢请求;读完 Span 树,还要把结论整理进故障群;拓扑、指标、日志有时得来回切。这不是 SkyWalking 做得不好,而是链路观测的下一步——让数据更快变成结论

DataBuff v0.1.3 做的事,是在这份成熟的 SkyWalking 采集之上叠加 AI 能力:Agent 照旧上报,Segment 数据完全同源;接入后可以用自然语言问慢因,Trace、指标、日志在同一界面连贯查看。下面先看最直观的变化。

说明:本文讨论的是在 SkyWalking 采集之上叠加 AI 协助解读——Agent 照旧上报,Segment 数据同源,重点是同一份链路数据能否更快读出结论。

1亮眼一刻:checkout 慢了,问一句就出结论

演示场景:GET /demo/checkout P99 约 240ms。告警里往往没有 traceId——接入 DataBuff 后,排障从「翻 Trace 列表」变成「问 AI」。

直接提问(无需 traceId):「service-a 的 checkout 接口最近为什么慢?」

向 AI 提问 checkout 慢因
自然语言提问;后台读取的是 SkyWalking Agent 上报的 Segment 数据

AI 自动拆链:返回典型慢 Trace、各段耗时、瓶颈 Span——不用在列表里逐条点开比对。

AI 返回 Trace 耗时分解
240ms 请求被拆到各服务与中间件段,瓶颈 Span 一目了然

结构化结论:AI 给出可转故障群的处置建议,而不只是「可能是 DB 慢」。

AI 排障报告
traceId + 瓶颈定位 + 优先级建议,可直接同步给同事

一键复核:拿 AI 返回的 traceId 跳转火焰图,核实全链路与 Span 耗时。

checkout Trace 火焰图复核
SkyWalking Segment 入库后的火焰图:GET /demo/checkout 240ms,DB / Cache / MQ / RPC 全链可展开
这一条链路的收获:从「筛列表、读 Span 树、写故障群」压缩成问一句 → 拿 traceId → 看图核实。链路数据仍是 SkyWalking Agent 采集的同一份 Segment,多出来的是 AI 读片能力。
💬

AI 问慢因

不用先找 traceId,接口级提问直接出瓶颈 Span

🔗

日志跳链路

日志行「Trace · 查看」一键到调用链,查慢请求有没有 ERROR

🖥️

运维专家复核

AI 锁定 JVM 可疑后,可 SSH 只读核查宿主机与容器

2还能多看一眼:拓扑、服务流、JVM

AI 给结论后,同一界面还能继续往下看——不用在多个系统之间来回切。

全局拓扑 checkout 依赖
全局拓扑:checkout 上下游依赖一图看清
service-a 服务流
服务流:入口 240ms,各下游贡献度可展开
日志与 Trace 关联
日志分析:每行可跳转调用链,慢请求与 ERROR 在同一上下文
service-a JVM 指标
JVM 指标:SkyWalking 上报的线程、GC、堆内存曲线,供 AI 与运维专家交叉验证

3接入前后:排障路径差在哪

前面 checkout 场景,若只沿用 SkyWalking 界面,大致要经历下面左边这些步骤;叠加 DataBuff 后,路径收成右边这样。

步骤沿用 SkyWalking 界面叠加 DataBuff 之后
1 · 找服务General → Service → 选 service-a拓扑 / 服务列表直接点 service-a
2 · 找慢 TraceTrace 页筛 checkout → 逐条点开对比向 AI 提问 → 自动返回 traceId + 瓶颈 Span
3 · 看瓶颈自己读 Span 树,找 DB / RPC 耗时AI 摘要 + 火焰图一键跳转
4 · 出结论靠人写:「可能是 DB 查询慢」AI 给出处置建议;运维专家可 SSH 复核 JVM
5 · 日志另开日志系统对 traceId日志列表「Trace · 查看」一键跳转调用链

你熟悉的 SkyWalking Agent 继续上报;接入后多出来的是AI 问数、统一界面与日志深链,采集对象不变。

4怎么接:Agent 不用换,后端指到 DataBuff

要让 SkyWalking 数据进入 AI 分析管道,v0.1.3 在 ingest 层原生监听 SkyWalking gRPC(端口 11800,与 OAP 官方默认一致)。Java 侧无需更换 Agent jar,只需改上报地址:

ingest 端口 4317/4318/11800 与 demo 环境变量
ingest 同时开放 OpenTelemetry(4317/4318)与 SkyWalking(11800)——多语言服务可并存
SkyWalking agent.config collector.backend_service
Agent 关键项:collector.backend_service 指向 DataBuff 主机
# agent.config agent.service_name=${SW_AGENT_NAME:your-service} collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:your-databuff-host:11800}
SkyWalking gRPC 与 OTLP 双路径并存
SkyWalking gRPC 与 OpenTelemetry 汇入同一 ingest → 存储 → AI 与 Web 界面

两种接入方式,都能使用 AI 能力

方式做法适合
并存试水保留 SkyWalking OAP,通过 MCP 读取 SkyWalking 数据暂时不能动现有 Agent,先体验 AI 问数
原生接入Agent 指向 DataBuff :11800,Segment 直连 ingest愿意切换后端,Trace / JVM / 日志统一进 DataBuff

5你可能想问

Agent 要换掉吗?

不用。线上在跑的 SkyWalking Java Agent 可以继续用,通常只改 collector.backend_service 里的上报地址。

OAP 必须马上下线吗?

不必须。想先感受 AI 问数,可以暂时保留 OAP;确定要深度用 DataBuff 后,再把 Agent 逐步指过来,分批重启、验证 checkout 这类接口能问出结论即可。

和 OpenTelemetry 能一起用吗?

可以。Java 服务继续走 SkyWalking(11800),Go / Python 等服务可以走 OpenTelemetry(4317),在同一个 DataBuff 界面里一起看。

AI 具体能帮我干什么?

演示里已经覆盖几条值班高频事:慢接口一问出 traceId 和瓶颈 Span日志行跳转调用链JVM 曲线供进一步核对。不用先成为 Trace 专家,也能先把方向找准。

适合什么样的团队?

  • 线上已是 SkyWalking,想给现有链路数据加上 AI 问数
  • Java 服务多、暂时不想重接 OpenTelemetry Agent
  • 希望 Trace、日志、指标在一个界面里连贯排查
建议路径:先在测试或单台实例改 Agent 地址 → 打几次 checkout 类请求 → 问 AI「最近为什么慢」→ 能拿到 traceId 并跳转火焰图,再考虑扩大范围。

SkyWalking 采集 + AI 协助解读

Agent 不用换 · 问一句出结论 · 日志可跳链路

Star on GitHub →