技术博客

阅读约 3 分钟

AI 运维军团再进化:日志分析有救了

Trace 能问 AI 之后,ERROR 日志也能委托给智能问数 —— checkout 库存不足实机:界面搜、火焰图互跳、AI 问,三条路走一遍。

0演示场景:InsufficientStockException

Demo 应用持续打 GET /demo/checkout。当库存不足时,service-b 抛出 InsufficientStockException: inventory unavailable for skuId=…,OTLP 日志写入 Doris,并携带 trace_id / span_id

下文所有截图均来自同一故障窗口(最近 1 小时),按值班真实顺序走三遍:

  1. 路径 A — 已知异常类名,全局日志页 Facet 检索
  2. 路径 B — 已知慢 Trace,从火焰图 Span 看日志 + 深链回全局页
  3. 路径 C — 一句话交给 AI,调度 log.queryLog* 工具查 ERROR 日志

1路径 A:全局「日志分析」检索

菜单位置:应用性能 → 日志分析。不推 LogQL,用关键词 + Facet 即可。

操作:搜索 InsufficientStockException → 勾选 ERROR + service-b → 95 条日志,柱状图显示 ERROR 尖峰时段。

日志分析页筛选 InsufficientStockException ERROR service-b
Scene A:关键词 + ERROR + service-b — 列表每行右侧「Trace · 查看」可跳调用链

2路径 B:Trace 里看 Span 日志 + 双向深链

B1 · Trace 头:TraceID 旁直达日志分析

从链路追踪打开 GET /demo/checkout 慢 Trace(240ms)。Trace 头展示 TraceID,右侧「日志分析」一键带 traceId 跳转全局页。

Trace 详情 TraceID 与日志分析链接
Scene B1:TraceID + 「日志分析」入口 — 不必复制粘贴 traceId

B2 · Span 侧栏:火焰图 + 日志 Tab

火焰树上带 Logs 标记的 Span 可展开侧栏「日志」Tab:时间线展示 Received checkout requestDelegating inventory check to service-b 等 INFO 行;选中 service-b 的 Span 可看到 ERROR 堆栈。

Trace 火焰图与 Span 日志侧栏
Scene B2:左火焰图(红框 SELECT demo_inventory)+ 右 Span 日志时间线

B3 · 深链:「在日志分析中查看全部」

侧栏底部点击后,全局页自动预填 traceId + spanId,只显示该 Span 上下文内的 4 条日志。

从 Trace 深链到日志分析页
Scene B3:URL 含 traceId/spanId — checkout 链路上下文日志一次看完

3路径 C:AI 平台问日志

界面适合精查;AI 适合一句话委托。智能问数专家注册了日志工具族,可在「工具管理」看到:

AI 工具管理 log.queryLogDetail 等
Scene C0:log.queryLogDetail · queryLogsByTraceId · queryLogsBySpanId · queryLogTrend

场景一:按服务 + 关键字搜 ERROR 日志:

帮我查 service-b 最近 1 小时 InsufficientStockException 相关的 ERROR 日志,列出 traceId 和关键日志摘要。
AI 派发智能问数查日志
Scene C1:AI 大脑 → 派发智能问数 → getCurrentTimeRange + queryLogDetail
AI 返回 traceId 与日志摘要表
Scene C2:汇总表列出 traceId + InsufficientStockException: inventory unavailable 摘要

场景二:已知 traceId,直接问链路上的 ERROR 与根因:

已知 traceId edfa44615dcee4d6bdfeed46d84bfb20,帮我列出这条链路上所有 ERROR 级别日志,并说明 checkout 失败原因。
AI 按 traceId 查日志并解释 checkout 失败
Scene C3:走 queryLogsByTraceId → 13 Span 调用链 + ERROR 日志 + checkout 库存不足结论

场景三:看 ERROR 日志量有没有尖峰(queryLogTrend):

service-b 最近 1 小时 ERROR 级别日志量趋势如何?有没有明显尖峰时段?
AI 分析 service-b ERROR 日志量趋势
Scene C4:queryLogTrend → 每分钟恒定 2 条 · 无尖峰 · 持续库存不足故障
工具选用规则:按服务/级别搜 → queryLogDetail;已知 traceId → queryLogsByTraceId;看某 Span → queryLogsBySpanId;看日志量尖峰 → queryLogTrend

4数据从哪来 · 和 ELK 怎么分工

OTLP Logs(:4317 / :4318)→ Ingest → Doris log_dc_recordPOST /log/search。Java 侧 MDC 注入 traceId 即可关联。

DataBuff 定位是 APM 语境下的日志探索,不是替代 ELK/Loki;优势在于与 Trace/Metrics/AI 同一上下文,少切三个系统。

与爆款⑤的关系:⑤ 讲 T→M→T→L 排障顺序;本文用同一 checkout 场景展示 L 在 DataBuff 里的三条入口

5快速体验

一条命令部署 · Demo 自带 checkout + 库存异常

curl -fsSL https://databuff.ai/databuff/ai-apm-install.sh | bash

GitHub · Star 支持

OpenTelemetry LogsTrace 关联AI Native