OpenTelemetry Blog

16 篇内容

技术文章OpenTelemetry Blog

When Missing Telemetry Is the Signal

文章指出,空面板既可能表示无活动,也可能表示系统停止上报,外观相同但处置不同,因此遥测缺失本身应被当作信号。作者建议为关键工作流定义应存在的信号,用边界计数器跨阶段对账,遵循“接受量=完成量+拒绝量+处理中”,并纳入过滤、重试、批处理等预期偏差。定位缺口可用 traces 与关联日志,但采样会让缺失 trace 成为正常采集决策,不能作为唯一检查;也可发送无敏感数据的合成事件走完整路径。作者还强调应用健康不等于遥测链路健康,完整性需在埋点阶段设计,并监控 Collector 内部遥测与遥测链路。

文章给出可操作的完整性检查方法:定义预期信号、跨阶段计数对账、用 traces 定位缺口、合成事件端到端验证,并明确采样和计划性静默期的边界,适合 SRE、可观测性工程师和平台团队参考。其计数对账与合成探针思路可迁移到数据管道和异步工作流;风险是缺少真实故障案例和具体实现细节,落地时需结合自身采样与拓扑调整。

工程实践OpenTelemetry Blog

Keycloak's observability journey: a guide for project maintainers

本文是 OpenTelemetry 开发者体验 SIG 对 Keycloak 维护者的访谈整理,复盘一个被广泛使用的开源 IAM 系统如何为自身产品加入原生 OpenTelemetry 支持。团队最初采用零代码的 Java agent 做链路追踪,但字节码扫描与改写使本已很快的启动增加数十秒,对安全敏感且需快速扩缩容的认证服务不可接受,于是转向基于 Quarkus 的原生集成以保留启动性能。可观测性建设先从指标切入,随后补上追踪,并借助 exemplar 从指标尖峰直接跳到代表性 trace,显著缩短排查 P99 延迟瓶颈的时间。文中还讨论了推送与拉取两种采集模式背后的信任取舍、社区反馈的碎片化观测栈痛点,并给出面向同类项目维护者的策略建议。文章偏维护者视角的项目经验总结,配置与性能证据集中在启动开销这一具体权衡上,覆盖面有限。

推荐收录:文中给出了可验证的工程证据——Java agent 带来数十秒、约三分之一的启动时间增长,并据此做出原生集成而非通用 agent 的架构取舍,还说明了指标与追踪通过 exemplar 联动的具体收益。适合开源项目维护者、平台与可观测性工程师阅读,其「性能敏感组件优先原生埋点」的判断和信号整合路径可迁移到其他中间件与基础设施项目;局限是经验集中在单一项目的启动性能维度。

技术文章OpenTelemetry Blog

Only include resource detectors you need by building your own Collector

文章讨论自建 OpenTelemetry Collector 发行版时,如何减少资源检测器带来的依赖负担。作者指出,资源检测器会为不同云厂商、容器运行时引入各自依赖;只要引入支持资源检测的组件(如 resourcedetectionprocessor),所有检测器都会被编译进二进制;Collector 自 v0.128.0 起通过 otelconf 支持配置 schema,也会把检测器代码带进来。解决方案是用 Go 构建标签 omit_detector_<name> 在编译期裁剪检测器,并在 ocb 清单的 build_tags 字段里配置,既可单独禁用,也可一次性禁用全部。作者同时说明 -ldflags 与 -trimpath 只能压缩已编译内容,无法移除仍被 import 的代码;默认保留全部检测器是为了向后兼容,但全部禁用时配置会冗长。文章偏重工具机制,未给出裁剪前后的二进制体积或依赖数量量化对比,正文在新增的 OCB 配置章节处截断。

收录理由:文章给出可直接照抄的裁剪手段——在 ocb 清单中用 build_tags: omit_detector_* 在编译期排除资源检测器,并说明默认全量保留的向后兼容取舍,以及 -ldflags/-trimpath 无法移除被 import 代码的边界。适合自建 Collector 发行版、关注二进制体积与第三方依赖面的平台和 SRE 读者;其中用构建标签裁剪可选依赖的思路可迁移到其他 Go 组件化项目。风险是缺少体积与依赖数量的量化验证,且正文部分章节缺失。

工程实践OpenTelemetry Blog

Faster, smaller checkpoints: the File Log receiver now uses protobuf

文章介绍 OpenTelemetry Collector File Log receiver 将 checkpoint 持久化格式从 JSON 改为 protobuf 的工程优化。作者先说明该 receiver 在配置 storage 扩展后,每个 poll 周期都会序列化所有跟踪文件的指纹、读取偏移、记录编号、文件属性和部分行刷新状态,默认 200ms 间隔意味着持续高频写入;有用户反馈 Collector 收集 Kubernetes 日志时资源占用明显高于 Fluent Bit,profiling 发现 JSON 编码 checkpoint 消耗了意外多的 CPU。核心改动是把原始文件指纹按字节保存、用 protobuf 数值标签替代重复字段名,并让数字和时戳保持二进制形式。基准覆盖 1 到 1000 个文件,显示编码、解码和往返约快 4 到 6.5 倍,1000 文件下每次保存分配内存下降约 49.74%,checkpoint 体积下降约 34.58%。文章也说明测试在共享云 VM 上完成,绝对数值会随硬件变化,应重点关注比例和自身工作负载复测。

推荐收录,因为它围绕真实用户反馈的资源占用问题,完整展示了 profiling 定位、序列化格式取舍、基准设计、内存与体积验证以及默认行为变更。对维护日志采集 agent、可观测性流水线或做序列化性能优化的读者,文中“按访问模式选择格式”和同时评估 encode/decode/内存/体积的方法可以直接迁移。需注意基准环境为共享云 VM,实际收益应在自己的硬件与文件规模上复测。

技术文章OpenTelemetry Blog

OpenTelemetry Transformation Language reaches v1

OpenTelemetry 官方博客宣布 OTTL 达到 v1:从 opentelemetry-collector-contrib v0.164.0 起,OTTL 在 traces、metrics、logs 上进入 stable,并承诺 1.x 期间语法、标准函数及 Go API 保持向后兼容。文章明确 v1 冻结语言参考中的路径、字面量、运算符、函数调用和 where 子句,标准函数签名也不再做破坏性变更;新函数须先在 xottl 模块中实验,经至少两个 minor 版本、测试文档和真实需求后再晋升。升级时需移除已废弃函数和 feature gate;lambda 函数、profiles 支持及部分实验 Go API 不在保证范围内。文章还回顾 OTTL 从 transform processor 配置语言发展为 14 个 Collector 组件使用的语言,并给出兼容边界和迁移提示。

推荐收录。文章不是单纯发布公告,而是给出 OTTL v1 的兼容承诺、语法冻结范围、实验函数晋升机制和升级清理项,能帮助 Collector 用户评估版本升级风险。对维护 OTel Collector 管道、编写 transform/filter 配置或基于 OTTL 开发组件的读者有直接参考价值;局限是 profiles 和 lambda 函数仍属实验。

技术文章OpenTelemetry Blog

Strengthening OpenTelemetry security while preserving API stability

OpenTelemetry 更新客户端版本化策略,允许稳定的 SDK 与 Contrib 组件在次版本或补丁版本中,为修复安全风险做范围受限的行为、默认配置或支持配置值调整,即使这会改变既有行为。文章说明动机:部分加固必须拒绝原先接受的输入或收紧证书校验,否则只能等到下一个主版本,迫使用户在风险与大规模升级间二选一。策略明确边界:不得重命名或删除公共 API、修改签名、重命名配置参数、重定义语义约定,也不得夹带无关不兼容变更。发布说明须披露风险、前后行为、被拒绝或截断的遥测及迁移路径;升级方应在代表性环境验证启动、配置接受度、遥测量和告警。该文是政策说明而非漏洞复盘,实际影响仍取决于具体 release notes。

推荐收录:文章直接给出 OTel 版本化策略的可执行规则,包括允许的安全变更类型、公共 API 与配置参数等硬边界,以及发布说明和升级验证清单。适合维护 SDK、发布可观测性组件或依赖 OTel 的团队用作升级审查参考;可迁移的是“安全修复优先但用明确边界和迁移说明控制兼容性风险”的方法。局限是缺少真实漏洞案例与量化影响,需结合具体 release notes 判断。

工程实践OpenTelemetry Blog

Versioned metrics: Shipping the first Release Candidate metrics in hostmetrics

文章介绍 OpenTelemetry Collector Contrib v0.160.0 为 hostmetrics receiver 的 process scraper 引入 release candidate(RC)版本的进程语义约定指标,这是其走向稳定 v1 前的最后阶段。由于语义约定变化会改动指标名称、类型和属性,无法原地修改,而 feature gate 只能切换已存在的代码路径,因此无法直接用于此次迁移。System SIG 权衡了“两套 metadata.yaml schema”与“单 schema 内并存新旧定义”两条路径,最终选择后者,以避免让现有用户修改 collector 配置。实现上,团队在 mdatagen 中新增 @version 后缀与 migration 字段(to、through_gates.disable_old/enable_new),后缀只作为 metadata 键存在并在发射时剥离,同时更新代码生成模板以处理同名指标冲突。文章也说明了 mdatagen 尚无 RC 稳定性级别、暂以 beta 近似的局限,并给出从 RC 到稳定以及 hostmetrics 后续稳定化的路径,呼吁用户试用新输出并反馈破坏点。

推荐收录,因为它完整呈现了一个真实开源组件在指标语义约定升级中的工程决策:为什么 feature gate 不足、两套 schema 与单 schema 版本化方案的权衡,以及 mdatagen 中 @version 后缀与 migration 字段的具体落地方式。对维护 Collector 组件、设计指标迁移或需要在不破坏用户配置的前提下做兼容演进的可观测性工程师具有直接可迁移价值;局限是文章偏项目内实现,未给出大规模升级验证数据。

工程实践OpenTelemetry Blog

OTel-Native by Design - Building Products That Export to Any Observability Stack

文章来自 OpenTelemetry 官方博客,讨论自托管软件与 SaaS 产品如何按 OTel-native 方式设计,使用户能把日志、追踪、指标推送到任意 OTLP 兼容后端。作者先梳理 OTel 的四类信号(日志、追踪、指标及处于 public alpha 的 profiles),并提出良好遥测系统应具备厂商中立、依赖标准 SDK 与 OTLP 而非专有 API、保留时间戳与 trace 关联上下文、遵循语义约定等特性。随后区分自托管与云平台两类运行环境,对比 Kuma、Keycloak、Cloudflare Workers、Heroku 的实践,并比较传统自定义轮询 API 与 OTLP 两种导出模型。文章还讨论单端点与按信号拆分端点,以及每租户独立 Collector 与共享 Collector 静态流水线两种多租户方案。主体限于日志、追踪、指标,未展开 profiles 实现细节,正文在语义约定部分被截断。

推荐收录:文章把“产品如何向任意可观测性后端导出遥测”当作真实设计问题,给出信号覆盖范围、OTLP 与自定义轮询 API 的取舍、端点路由方式和多租户 Collector 布局等可直接迁移的架构判断,并用 Kuma、Keycloak、Cloudflare、Heroku 等实例佐证。适合为自托管或 SaaS 产品规划遥测导出的架构师与平台工程师参考;主要局限是 profiles 与部分后端细节未展开,正文有截断。

技术文章OpenTelemetry Blog

The OpenTelemetry Java agent 3.0 is almost here — preview it today

文章预览 OpenTelemetry Java agent 3.0:2.32.0 作为候选版本,3.0 预计 2026 年 10 月发布,主要把数据库与代码语义约定转为稳定默认,消息语义约定仍实验,并调整部分采集与默认插桩行为。作者给出迁移方法:先在测试环境采集基线,用 database/dup、code/dup、messaging/dup 让新旧属性或指标并行上报,再用 v3_preview 总开关整体验证新约定与默认值。需要检查名称、取值、类型、单位、数据库端点标识、消息链路结构、身份采集和扩展/发行版兼容性。文章强调 /dup 不会保留所有旧指标或两种链路形状,且 3.0 正式发布前行为仍可能变化;因此适合作为升级 OTel Java agent 和观测管道的迁移检查清单。

推荐收录:文章不是泛泛发布公告,而是给出 3.0 预览的具体迁移路径,包括 database/dup、code/dup、messaging/dup 双写与 v3_preview 总开关,以及名称、取值、单位、端点标识、链路结构和默认值等检查点。适合维护 Java 服务、Collector 管道、仪表盘和告警的可观测性工程师用作升级预演;风险是内容针对特定版本且 3.0 正式发布前仍可能变化,需配合官方迁移指南使用。

技术文章OpenTelemetry Blog

Zero-code trace-log correlation with OBI

文章介绍 OBI(OpenTelemetry eBPF Instrumentation)如何在零代码改动下为应用日志注入 trace 上下文。核心机制是用 eBPF 获知每个线程写日志时正在处理的请求,在容器日志管道接收之前把 trace_id、span_id 写入 stdout/stderr 日志行,支持 JSON、NDJSON 与纯文本(key=value 形式),实现 trace 与日志的双向关联,且无需 SDK、无需重编译或重新部署。文章给出明确适用边界:仅覆盖 stdout/stderr、需在请求内存在活跃 trace 上下文、要求 CAP_SYS_ADMIN 与非 lockdown 内核、Linux 6.0+ 才覆盖 write() 路径,并指出 Node.js 异步 stdout、Python 需 PYTHONUNBUFFERED、.NET 需同步 console writer、Java 虚拟线程尚未支持等限制,还说明了启用配置与过滤 NUL 占位行的管道改动。

推荐收录,因为它不是功能公告,而是系统解释了 eBPF 注入 trace 上下文的机制、适用环境边界(内核版本、同步日志、stdout/stderr 限制)与启用配置,并点明 Node.js、Python、.NET 及 Java 虚拟线程等失败场景。对做可观测性、trace-log 关联或计划落地 OBI 的 SRE 与平台工程师,这些约束和配置可直接用于评估与部署决策。需注意文末生产注意事项一节被截断。

技术文章OpenTelemetry Blog

Exploring the OpenTelemetry Instrumentation Ecosystem

文章讨论 OpenTelemetry 生态中插桩(instrumentation)一致性这一难题。核心论点:语义约定从进入规范到稳定往往耗时数年(HTTP 2019 至 2023,Database 2019 至 2025),之后各语言插桩库还需跟进,导致实现滞后、属性或指标缺失,且仅靠阅读规范无法判断哪些库已完成迁移。作者介绍了 OpenTelemetry Ecosystem Explorer,可按版本编目组件、展示其声明的遥测与配置项;以及 semantic-conventions-conformance 项目,通过运行小型测试场景、收集遥测并用 Weaver live-check 与约定比对来度量一致性。跨语言数据显示必需属性(如 http.request.method、server.address)几乎都具备,而推荐属性(如 network.peer.address、network.protocol.version)覆盖不足。作者强调解读结果需谨慎:某场景未观测到属性并不等于插桩永不产生,可选属性缺失也属正常。

推荐收录:文章不止于项目动态,而是清楚阐述了语义约定稳定滞后、插桩实现长期不一致这一工程问题,并给出可迁移的一致性度量方法(测试场景+Weaver live-check+跨语言对比数据)。适合关注可观测性、OpenTelemetry 生态与跨语言插桩验证的工程师参考。主要不足是内容偏介绍性,缺少实现细节与失败案例,工具本身仍在演进。

工程实践OpenTelemetry Blog

Prometheus and OpenTelemetry interoperability in 2026: Survey results

文章是 OpenTelemetry 与 Prometheus 社区 2026 年互操作性调查,基于 186 份回复筛选出 81 名活跃 OTel 指标用户(均使用 Prometheus 或兼容后端),并排除厂商员工。核心结论是互操作性明显改善:平均易用性评分从 2024 年的 3.1 升至 3.6,认为两者难以共用者从 29% 降至 10%。基础设施采集中 Prometheus exporter 与 OTel receiver 分别为 72% 和 57%,近半用户混合使用;应用采集中 OTel SDK 65%、Prometheus SDK 52%,41% 仅用 OTel 风格。处理环节以 Prometheus relabeling 和 OSS OTel Collector 为主,65% 使用无厂商转换的 vanilla stack。报告还观察到中型组织更早采用 OTel 原生工具,但样本偏大型高成熟度组织,且与 2024 年人群不完全可比。

推荐收录:它提供了可验证的社区调查数据,量化了 Prometheus 与 OpenTelemetry 互操作性的改善、混合采集现状和常见处理链路。对可观测性平台、SRE 和基础设施团队做指标栈选型、迁移或 Collector 管道设计有直接参考价值;需注意样本偏向大型高成熟度组织,且与 2024 年调查人群不完全一致,趋势判断应结合自身环境。

技术文章OpenTelemetry Blog

Dual-exporting .NET metrics with OTLP and Prometheus

文章介绍在 .NET 应用中同时向 Prometheus 与 OTLP 后端导出指标、以避免一次性切换造成可观测性空窗的两种渐进迁移方案。第一种方案使用 OpenTelemetry 的 Prometheus exporter,基于应用内 Meter API 采集指标,既通过 HTTP 抓取端点以文本格式暴露给 Prometheus,又经 OTLP exporter 推送到支持 OpenTelemetry 的后端,从而可移除对 prometheus-net 等原生客户端的依赖。作者给出 SDK 配置与 MapPrometheusScrapingEndpoint 示例代码,并指出 Prometheus summary 类型与 native histogram 在 Meter API 中没有直接对应实现,迁移耗时取决于既有仪表化的复杂度。第二种方案让 Prometheus 通过 --web.enable-otlp-receiver 直接接收 OTLP 推送,适合只有 Prometheus 而无 OTLP 后端的场景。文章后半段与总结部分在抓取中不完整。

推荐收录,因为它并非泛泛介绍 OpenTelemetry,而是针对从 Prometheus 迁移到 OTLP 的真实痛点,给出可双写过渡的两种可执行方案与示例代码,并明确列出 Meter API 无法覆盖的 summary、native histogram 等边界与迁移成本。适合正在做可观测性栈迁移的 .NET 后端与平台工程师参考,其中的渐进迁移思路与限制清单可迁移到其他语言的类似改造;需注意原文抓取不完整,后半段与总结缺失。

技术文章OpenTelemetry Blog

Metric cardinality limits in OpenTelemetry: a practical guide

文章详解 OpenTelemetry 指标 SDK 中的基数限制机制,该限制旨在防止进程因接收过多唯一属性组合而导致内存无限增长。作者说明,当指标流的属性基数超出阈值时,总量值保持正确,但按属性过滤或分组查询可能产生低估计数,影响仪表盘、SLO 和告警。文中还介绍了如何检测溢出、配置合理限制以及权衡内存安全与数据准确性的实用建议。该指南面向已经或计划在生产环境中使用 OpenTelemetry 指标的用户,提醒他们注意这一容易被忽略的行为及其对可观测性的潜在影响。

推荐收录,因为它深入解析了 OpenTelemetry SDK 中基数限制的设计原理和实际后果,为可观测性工程师提供了重要的认知模型和操作指导。文章直接揭示了一个可能被忽视的数据偏差问题,对依赖精确指标进行告警和 SLO 计算的团队具有可迁移的参考价值。

技术文章OpenTelemetry Blog

Lambda-powered functions land in OTTL

文章介绍了 OpenTelemetry Collector Contrib v0.157.0 为 OTTL(OpenTelemetry 转换语言)引入的 lambda 表达式能力。此前,处理集合操作需要为每个用例硬编码专用函数,而 lambda 让用户能够将内联逻辑传入通用高阶函数,从而以更可复用且简洁的方式实现复杂的数据转换。文中列出了随版本发布的八个新函数:Filter、MapEach、MapKeys、Any、All、Find、Reduce 和 When。这一增强标志着 OTTL 向函数式范式的转变,有助于简化遥测管道的配置与维护,但文章未详细讨论 lambda 在此场景下的性能开销或适用边界。

文章介绍了一项 OTTL 语言级别的重大增强,通过 lambda 和高阶函数提供了更通用的集合转换能力,对构建和维护复杂遥测管道的工程师具有直接参考价值。其所展示的函数式抽象思路可迁移至其他管道工具或 DSL 设计,适合可观测性实践者和平台工程师阅读,但读者需注意文中可能未涉及生产环境下的性能影响等边界讨论。

工程实践OpenTelemetry Blog

How Skyscanner scales OpenTelemetry: managing collectors across 24 production clusters

文章介绍 Skyscanner 在 24 个生产 Kubernetes 集群中规模化管理 OpenTelemetry collectors 的实践。作者以平台工程团队视角切入,说明由 6 名工程师组成的 Hubble 团队如何承担 collector 的主要运维责任,并服务于公司以 Java 为主、超过 1000 个微服务的计算平台。内容的重点不是 OpenTelemetry 基础概念,而是多集群环境下 collector 的部署、管理与组织分工问题。它反映出观测栈在大规模微服务组织中会逐渐平台化,需兼顾统一治理、团队协作与运维可持续性。适用边界也较明确:更适合已经有 Kubernetes 和 observability 基础、正在做平台化整合的团队参考。

推荐收录,因为标题和导语直接给出了真实规模与场景:24 个生产集群、1000+ 微服务、平台团队统一管理 collectors。对做可观测性平台、Kubernetes 运维或 OpenTelemetry 落地的读者,这类跨集群治理与组织分工经验具有较强迁移价值。