OpenTelemetry eBPF 仪器

了解如何使用 OpenTelemetry eBPF 仪器进行自动仪器化。

OpenTelemetry 库为流行的编程语言和框架提供了遥测收集。然而,开始分布式跟踪可能很复杂。在某些编译型语言(如 Go 或 Rust)中,您必须手动将跟踪点添加到代码中。

OpenTelemetry eBPF 仪器 (OBI) 是一种自动仪器化工具,可轻松开始应用程序可观测性。OBI 使用 eBPF 自动检查应用程序可执行文件和操作系统网络层,并捕获与 Web 事务和速率错误持续时间 (RED) 指标相关的跟踪跨度,用于 Linux HTTP/S 和 gRPC 服务。所有数据捕获都在不修改应用程序代码或配置的情况下进行。

OBI 提供以下功能

  • 广泛的语言支持:Java、.NET、Go、Python、Ruby、Node.js、C、C++ 和 Rust
  • 轻量级:无需更改代码,无需安装库,无需重启
  • 高效的仪器化:通过 eBPF 探针捕获跟踪和指标,开销最小
  • 分布式跟踪:捕获分布式跟踪跨度并报告给收集器
  • Kubernetes 原生:为 Kubernetes 应用程序提供无需配置的自动仪器化
  • 可视化加密通信:在不解密的情况下捕获 TLS/SSL 上的事务
  • 上下文传播:自动跨服务传播跟踪上下文
  • 协议支持:HTTP/S、gRPC 和 gRPC-Web
  • 低基数指标:与 Prometheus 兼容的低基数指标,可降低成本
  • 网络可观测性:捕获服务之间的网络流
  • 数据库跟踪:捕获数据库查询和连接

要求

OBI 运行需要以下条件

  • Linux 内核版本 5.8 或更高版本(Redhat Enterprise Linux 为 4.18)
  • x86_64 或 arm64 处理器
  • eBPF 的运行时支持(大多数现代 Linux 发行版)
  • 管理权限(root 访问权限)或 配置参考 中列出的特定能力
OBI eBPF architecture

兼容性

OBI 在以下 Linux 发行版上进行了测试

  • Ubuntu 20.04 LTS、21.04、22.04 LTS 和 23.04

  • CentOS 7、8 和 9

  • AlmaLinux 8、9

  • Rocky Linux 8、9

  • Red Hat Enterprise Linux 8、9

  • Debian 11、12

  • openSUSE Leap 15.3、15.4

  • SUSE Linux Enterprise Server 15 SP4

  • OBI 还支持基于 RedHat 的发行版:RHEL8、CentOS 8、Rocky8、AlmaLinux8 等,它们提供了回传 eBPF 相关补丁的 Kernel 4.18。

  • 要仪器化 Go 程序,请至少使用 Go 1.17 进行编译。OBI 支持使用比当前稳定主版本晚 **不超过 3 个版本** 的 Go 主版本构建的 Go 应用程序。

  • 执行 OBI 的管理访问权限。

局限性

OBI 也有其局限性。它仅提供通用指标和事务级别的跟踪跨度信息。仍然建议使用语言代理和手动仪器化,以便您可以指定要捕获的自定义属性和事件。

虽然大多数 eBPF 程序都需要提升的权限,但 OBI 允许您指定更细粒度的权限以使用最少必需权限运行,例如:CAP_DAC_READ_SEARCHCAP_SYS_PTRACECAP_PERFMONCAP_BPFCAP_CHECKPOINT_RESTORE 等。

某些 OBI 功能需要进一步的权限,例如,使用 Linux Traffic Control 的网络可观测性探针需要 CAP_NET_ADMIN,但这需要您选择启用。

有关 OBI 所需能力的完整列表,请参阅 安全、权限和能力

开始使用 OBI

  • 遵循 设置 文档,通过 Docker 或 Kubernetes 开始使用 OBI。

故障排除

  • 有关常见问题的帮助,请参阅 故障排除 指南。

配置 OBI

了解如何配置 OBI。

网络指标

配置 OBI 以观察点对点网络指标。

设置 OBI

了解如何设置和运行 OBI。

OBI 导出的指标

了解 OBI 可以导出的 HTTP/gRPC 指标。

使用 OBI 进行分布式跟踪

了解 OBI 的分布式跟踪支持。

测量总请求时间,而不是服务时间

如何从客户端的角度测量总请求时间

OBI 安全、权限和能力

OBI 所需的权限和能力

故障排除

对 OBI 常见问题和错误进行故障排除

OBI 和 Cilium 兼容性

将 OBI 与 Cilium 一起运行时兼容性说明

OBI 指标基数

概述如何计算默认 OBI 安装产生的指标的基数,同时考虑仪器化环境的大小和复杂性。


最后修改于 2025 年 12 月 9 日: 添加 obi 故障排除文档 (#8559) (bc9ab59a)