主要观点:
- 可观测性有成本,如在应用中添加指标、日志或分布式追踪会带来开销,需衡量以做权衡。
- 如今 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 对不同部分的影响,如处理跨度批处理和导出等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。