LinkedIn用OpenTelemetry打通客户端到后端追踪
LinkedIn搭建了一套基于OpenTelemetry的端到端遥测平台,把iOS、Android和Web端的用户操作,与负责处理请求的前后端服务及底层数据存储连接起来,试图解决客户端行为分析和后端分布式追踪长期割裂的问题。
过去,客户端系统能够记录按钮点击、页面加载或报错,后端追踪则负责展示请求经过哪些服务,但两套数据往往需要人工拼接。新方案允许工程师从用户交互出发,沿着前端、后端服务一路定位到数据存储。针对一个页面可能触发大量请求的情况,LinkedIn在标准traceId之外引入pageForestId,为页面级用户旅程提供统一上下文。同一页面产生的多个请求仍各自保留traceId,同时可通过pageForestId进行关联,从而兼顾单请求排障和跨请求体验分析。
LinkedIn的技术栈包括移动端、Web端,以及采用Java、Python、Go和Rust开发的后端。平台以OpenTelemetry的通用埋点模型、上下文传播机制和语义约定为基础,并在标准SDK之上封装扩展,让产品团队按照统一规范接入,平台则集中处理移动应用生命周期、遥测上报和内部元数据。客户端与服务端都会生成span,HTTP和gRPC框架可自动覆盖常见调用路径,关键业务操作也能补充手动span。
遥测数据通过Apache Kafka传输,并写入ClickHouse,pageForestId、traceId和时间戳共同承担数据关联职责。由于完整采集每个span会产生庞大数据量,平台采用协同头部采样,让客户端和服务端对同一用户旅程使用一致的采样结果。经过匿名化的用户标识用于维持这种一致性,避免只保留客户端记录或只留下后端追踪。平台还区分体验质量数据与调试数据,LinkedIn估计部分后端追踪中最多90%属于调试级信息。
移动端还面临应用进入后台、挂起甚至被系统终止,导致数据尚未上传的问题。为此,平台会批量处理span,并在应用切入后台时主动刷新遥测数据。同时,属性白名单、黑名单和内容脱敏机制限制可进入追踪链路的数据,降低敏感用户信息或应用数据意外泄露的风险。
Jaeger、Grafana Tempo等传统工具主要面向后端服务间追踪,Datadog和New Relic则将分布式追踪与真实用户监控、应用性能监控结合。LinkedIn的重点并非单纯增加一种商业平台能力,而是以OpenTelemetry作为跨客户端与后端遥测的统一底座,再借助pageForestId扩展请求分组,并用Kafka和ClickHouse构建可控的采集存储体系。这样,工程师能够把用户看到的加载缓慢、操作失败和功能异常,直接关联到背后的技术根因。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文