分布式链路追踪在字节跳动的实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 分布式链路追踪在字节跳动的实践 字节跳动基础架构可观测性基础设施团队 朱珠
2. 大纲 • 什么是分布式链路追求(Trace) • 字节链路追踪系统的挑战、机遇和目标 • 字节链路追踪系统的实现 • 实践应用案例
3. Metric / Log / Trace Metric Log Trace
4. 当 Metric / Log / Trace 彼此孤立…… 小 A,你的服务有很多错 误日志,是不是有故障? 小 B,你的服务 CPU 很高,是不是有问题? 收到告警,服务失败率持续上升
5. 进一步理解 Trace Metric Log Trace 是 Context 载体, 串联 Context 中所有 Metric 和 Log, 是监控数据的链接纽带
6. 当 Trace 成为监控数据的可靠链接纽带 关联对应的 错误 Trace 收到告警,服务失败率持续上升 在源头节点上定 位到 panic 日志 查看错误链路,定位错误源头
7. 大纲 • 什么是分布式链路追求(Trace) • 字节链路追踪系统的挑战、机遇和目标 • 字节链路追踪系统的实现 • 实践应用案例
8. 字节链路追踪系统的挑战和机遇 某核心接口背后的微服务链路 挑战 • 线上流量巨大 • 微服务数量巨大,关系复杂, 迭代变化快 • 研发团队庞大,分工复杂 机遇 • 微服务框架高度统一 • 微服务高度容器化,环境统一 • 存储/中间件基础设施统一
9. 字节链路追踪系统的功能性目标 统一数据 模型与语义 开放 自定义 中心化 配置管控 一站式 观测平台 统一数据模型和语 统一模型基础上, 中心化动态管控采 构建一站式观测平 义规范;建立 充分开放自定义能 样、染色、熔断限 台,提升监控排障、 MTL 可靠关联关 力,满足不同业务 流、索引、脱敏保 SLO 优化等场景 系 场景需求 密等策略 的能效
10. 字节链路追踪系统的非功能性目标 集成开销 最小化 平衡 成本与需求 多机房 容灾完备 最小化架构 与依赖复杂度 最小化接入成本与 有限成本处理和存 单机房断网宕机等 简化架构与依赖, Overhead 储大量数据,保证 故障场景下,保证 部署与运维友好 秒级以内的检索速 可用 度
11. 大纲 • 什么是分布式链路追求(Trace) • 字节链路追踪系统的挑战、机遇和目标 • 字节链路追踪系统的实现 • 实践应用案例
12. 数据模型 Span : 一 个 有 时 间 跨 度 的 事 件 , 例 如 一 次 RPC 调用,一个函数执行。 Event : 一个没有时间跨度的事件,例如一条 log,一次 panic。 Metric : 一个带多维 tag 的数值,例如一个消 息体的大小。 Trace : 一个请求上下文在多个分布式微服务 节点的完整执行链路。 Transaction: 一条 Trace 在单个服务节点上 的所有 Span / Event / Metric 对象构成的树 形结构消息体。
13. 统一数据模型建立 M T L 可靠关系(1) Context 贯穿整个请求生命周期, 在进程内和跨进程间持续传递,将数据串联起来
14. 统一数据模型建立 M T L 可靠关系(2) Span 的频次/耗时/失败率统计 Metrics Custom Metric sales_price 通过 TraceID+SpanID 实现 Trace 和 Log 的精确关联 通过多维 Tag 实现 Trace 和 Metric 的精确映射 Event 的频次统计 Metrics pay_success
15. 统一语义规范 • 对 HTTP Server, RPC Server, RPC Client, MySQL Client, Redis Client, MQ Consumer, MQ Producer 等主流场景统一语义规范
16. 采样 固定概率采样+低流量接口兜底采样 • 默认以 Logid 作为采样种子,按固定概率进行采样,同时确保低流量接口也有一定数目的请求被采样。 自适应概率采样 • 以单位时间采样一定数目为目标,自动根据当前 QPS 计算采样率进行采样。 染色采样 • 对特定的请求添加染色标记,对该请求进行强制采样。 PostTrace 后置采样 • 当一个 Trace 一开始未命中采样,但在执行过程中发生了一些令人感兴趣的事(例如出错或时延毛刺)时,可以在 Trace 中间状态发起采样。相较于先全采再后置采样,此方案开销极低。
17. PostTrace 后置采样 成功 失败 1 2 3 可被采样部分 4 5 6 7 在阶段 5 发生异常,触发 PostTrace, 可以采集到 1,4,5,6,7,但是无法采集 2,3。 PostTrace 展示效果:
18. 中心化配置管控 采样策略 • 按照不同服务、接口、集群、机房等条件动态配置采样策略 熔断保护 • 多种熔断保护机制确保 Trace 采集不会占用过多资源影响主线功能 自定义索引 • 支持业务按需为自定义字段创建索引,满足业务字段检索需求 脱敏保密 • 按需对 Trace 数据进行写入时脱敏和查询时保密
19. 整体架构 • 私有协议数据流,性能更极致 • 底层本高吞吐的字节自研日志存储 • 单元化架构保障多机房容灾完备性 • 精细灵活的中心化调控能力 • 兼顾在线实时查询与计算分析 • 准确度和时效性较高的元数据采集
20. 多机房容灾完备性 • 单元化部署,写入流主机房之间无网络通信, 主机房间网络故障时,功能不受损。 • 单机房宕机或孤岛时,顶层查询模块动态屏 蔽故障机房,保证其他机房数据可用。 • 顶层查询模块所在机房宕机或断网时,切到 Standby 机房继续服务。
21. 分析计算
22. 现阶段实施效果 • 吞吐量:Transaction 数 10 Million/秒(默认采样率 0.1%),索引数 300 Million/秒 • 查询性能:TraceID 检索 P50 < 100 毫秒, P99 < 500 毫秒 • 数据产生到可检索全链路时延: AVG ≈ 1 分钟,P99 < 2 分钟 • 存储资源:5 PB (2 副本 TTL 15 天)
23. 大纲 • 什么是分布式链路追求(Trace) • 字节链路追踪系统的挑战、机遇和目标 • 字节链路追踪系统的实现 • 实践应用案例
24. 【实践案例】微服务 P99 毛刺请求根因定位 2. 观察到 client 侧耗时很高, server 侧耗时很低 1. 观察耗时指标并条件筛选毛刺请求 4. 观察 client 进程对应的 Pod 监控指标, 发现有持续的 CPU Throttle, 造成毛刺请求 3. 查看底层调用分析,发现 egress mesh / ingress mesh / server span 阶段耗时都很低,排除网络原因,卡顿发生在 client 进程
25. 【实践案例】全链路实时监控 • 从任一微服务节点检索到精确的上 下游关联拓扑 • 实时观测各节点的流量/延迟/错误率 /资源使用率/告警/变更等,快速从 全链路视角获取整体状态信息
26. 【实践案例】业务活动全链路扩容估算
27. 【实践案例】错误传播链分析 • 故障时快速分析 • 异常来源 • 传播影响面 • 长期离线订阅 • 强弱依赖梳理 • 持续 SLO 优化
28. 小结 • Trace 与 Metric, Log 的关系 • 字节链路追踪系统的挑战、机遇和目标 • 字节链路追踪系统的实现 • 实践应用案例
29. THANKS

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-27 11:01
浙ICP备14020137号-1 $访客地图$