OpenTelemetry(OTel)
云原生可观测性的开放标准,统一日志、指标与追踪的采集与传输协议。
生产方式:人写签发:晓黎学习复核:2026年9月21日被 1 个词条引用
一句话定义
OpenTelemetry = 一套开放的可观测性标准与工具集,用统一的方式采集和传输日志、指标与追踪数据,使应用不绑定特定观测后端。
解决什么问题
没有 OTel 时,每个观测后端有自己的 SDK 和协议。更换后端意味着改代码。
无 OTel:
App → SDK-A → 后端 A
App → SDK-B → 后端 B (换后端要改代码)
有 OTel:
App → OTel SDK → OTel Collector → 任意后端
├── Loki
├── Elasticsearch
└── 自建
三大信号
| 信号 | 内容 | 回答的问题 |
|---|---|---|
| Logs | 结构化事件记录 | 发生了什么 |
| Metrics | 可聚合数值 | 有多少、趋势如何 |
| Traces | 请求链路与各段耗时 | 慢在哪里 |
在 Agent Harness 中的体现
DeepSeek Harness 把遥测做成能力接缝,Provider 直接使用 OTel:
dsh-session-telemetry ← Service Definition(ctx.sessionTelemetry)
↓
dsh-session-telemetry-otel ← Service Provider,原样配置的 OTel JS SDK
↓
外部观测后端
设计要点:Harness 不自建观测后端,接入标准生态。
同时明确了一条边界:
边界公理(harness 的职责止于
emit();批处理、重试、排队与丢失策略都属于上报 SDK)
即:**Harness 只负责产生遥测记录,传输可靠性交给 OTel SDK。**这避免了在 Harness 里重复实现队列、重试和降级逻辑。
Trace 与 Span
追踪的核心结构是 trace 与 span:
trace(一次完整请求)
├── span: prompt-assembly
├── span: llm-request
├── span: tool/call
│ └── span: approval-request
└── span: tool/result
每个 span 记录起止时间、属性和状态。通过 span 树能定位「这次任务 80% 的时间花在审批等待上」。
相关
- 第 17 讲 可观测性
- Capability Seam(能力接缝) — 遥测作为接缝,Provider 可替换
- LogQL — 查询日志的典型语言,常与 OTel 采集的数据配合
互链
链接来自概念卡正文里的双链,编译时能解到本期词条集的才成为站内链接。
- Capability Seam(能力接缝)相关概念
- LogQL相关概念
反链(1)
出现在哪些课时里(0)
判据与「课时正文里能不能点出来」是同一个:那一节确实提到了它。点课时走当前页跳转, 它是导航,不是词条链接。
还没有课时讲到这一条。它是词条跑在课程前面的那一部分,不是错链。
关联图
只画这一条与它直接相连的词条,边与上面两区同源。可拖拽、可缩放,点节点是新标签。
以列表方式看这 4 个节点
出处
路径是本地知识库(Obsidian 库)里的位置,正文与概念卡逐字对应。
- 概念卡原文OpenTelemetry(OTel)
03_RESOURCES/概念/open-telemetry.md - 所属知识地图栏目概念页索引 · 可观测性与可靠性
03_RESOURCES/概念/Index.md - 正文引用的知识库笔记第 17 讲 可观测性
02_AREAS/AI开发/Harness Engineering/Agent Harness 课程/17-可观测性:如何知道系统正在发生什么.md
编译入库:2026年11月2日。词条由知识库编译而来, 修正要回到概念卡改,再重新编译。