Go 的 OpenTelemetry:测量开销

主要观点

  • 可观测性有成本,如在应用中添加指标、日志或分布式追踪会带来开销,需衡量以做权衡。
  • 如今 OpenTelemetry 是收集应用遥测数据的行业标准,文中通过 Go 应用测试其开销。
  • 测试中对比了应用在未使用 OpenTelemetry 和启用后的性能、资源使用等情况,包括内存、CPU、延迟、网络流量等方面的变化。
  • eBPF 基于的工具能以轻量级方式提供观测性,在高负载环境中推荐仅使用指标而禁用基于 eBPF 的追踪。
  • 可观测性成本取决于实现方式,OpenTelemetry SDK 提供详细追踪但有开销,eBPF 基于的指标更轻量,应根据目标选择合适方式。

关键信息

  • 测试用四台 Linux 节点,分别运行应用、Valkey、负载生成器和观测工具。
  • 应用代码中根据环境变量决定是否初始化 OpenTelemetry SDK。
  • 测试结果显示启用 OpenTelemetry 后内存使用增加约 5 - 8MB,CPU 从 2 核增加到约 2.7 核,延迟从 99 百分位 10ms 增加到约 15ms,吞吐量稳定在 10000 次/秒,网络流量增加约 4MB/秒。
  • Coroot 的 eBPF 代理在测试中 CPU 使用率低于 0.3 核,轻量适合生产使用。

重要细节

  • 测试中使用 wrk2 生成每秒 10000 次请求,100 连接和 8 线程的负载,每次运行 20 分钟。
  • 测试中通过 eBPF 工具收集和分析各种数据,如性能指标、CPU 分析等。
  • 详细说明了 OpenTelemetry SDK 对不同部分的影响,如处理跨度批处理和导出等。
阅读 12
0 条评论