零成本实现遥测?🚀 OpenTelemetry eBPF Instrumentation (OBI) 首次发布公告!

原文:

本文是AI对原文进行加工后的文章。

大家好!今天我们很高兴向技术社区宣布一个激动人心的消息:OpenTelemetry eBPF Instrumentation (OBI) 的第一个 Alpha 版本已正式发布!🥳

OBI 是 Grafana Labs、Splunk、Coralogix、Odigos 等多个社区成员重要协作的成果,其根源在于今年早些时候 Grafana Labs 捐赠的 ‘Grafana Beyla’ 项目。在 OpenTelemetry 的管理下,开发速度得到了显著提升,🚀 取得了令人瞩目的进展,包括更广泛的协议支持、大规模部署时的质量改进以及测试速度提高了 10 倍。这真正证明了 OpenTelemetry 社区的力量!


什么是 OBI,为何值得关注? 🤔

那么,OpenTelemetry eBPF Instrumentation (OBI) 究竟是什么,为什么它对我们很重要?

与许多现有的 OpenTelemetry 观测方法不同,OBI 在进程外部 (out-of-process) 运行,并在协议级别而非库级别执行观测。它利用强大的 eBPF 技术,提供深层的内核级集成、进程隔离、运行时安全性和卓越的性能优势。

OBI 在协议级别工作意味着,您只需一个命令,就可以以“零成本”对几乎所有应用程序(任何编程语言、任何库)进行观测。让我们详细了解一下这为最终用户带来了哪些实际好处。

1. 无需重启、代码更改或配置更改! 🚫

OBI 独立地完美自动收集指标和追踪。eBPF 的真正美妙之处在于,它能确保您在运行环境中应用任何东西都不会使系统、集群或应用程序变得不稳定。

2. 没有新的应用程序依赖项(降低安全漏洞 ⬇️)

OBI 在进程外部运行,因此不会向您的应用程序添加任何内容。无需升级或添加 OpenTelemetry SDK 依赖项,即使在添加的 SDK 依赖项中发现漏洞,也无需修补您的应用程序。OBI 的访问权限可以在系统上单独进行安全管理,这不会影响其他已安装的组件。

3. 添加遥测不会导致应用程序性能下降 ⚡

由于应用程序无需额外工作或添加任何东西来导出遥测数据,因此遥测数据收集不会影响应用程序性能。OBI 大部分工作在内核级别完成,并且针对性能进行了高度优化。即使在非常高的请求频率下,它也显示出最小的 CPU 和内存使用量。

4. 所有语言和库中一致的遥测 🌐

OBI 确保您的所有服务都符合最新稳定版 OpenTelemetry 规范的遥测数据,而无需您手动管理兼容性。

5. 广泛的协议支持 📡

它支持 HTTP/HTTPS、HTTP/2、gRPC、SQL、Redis、MongoDB、Kafka、GraphQL、Elasticsearch/OpenSearch、AWS S3 等多种协议的观测,并为所有编程语言提供自动追踪上下文传播。


那么,只使用 OBI 就能解决所有问题吗? 🧐

答案是 “是的,而且……”

OBI 在特定情况下表现出色,但与其他 OpenTelemetry 技术结合使用时会变得更加强大。让我们看看这在实践中意味着什么。

OBI 是开始使用 OpenTelemetry 的绝佳工具。它能让您快速获取 RED(请求、错误、持续时间)指标、服务图和特定应用程序的追踪等基本信号。

然而,由于数据收集是在内核级别进行的,它可能缺乏其他类型的 OpenTelemetry 观测(例如 SDK)所能提供的特定级别的详细信息。

何时值得尝试 OBI:👍

  1. 当您完全没有或只有部分遥测数据时:这是一种自动观测所有内容(尤其是编译后的二进制文件)的简便方法。OBI 会检测已使用其他 OpenTelemetry SDK 进行观测的应用程序,并且不会重复生成信号,因此即使在观测和未观测应用程序混合的环境中也可以安全应用。
  2. 当您的应用程序使用 OpenTelemetry 不支持的库时:例如,比官方支持的库更旧的库,或者没有人提供观测的库。

何时最好保留现有方法:💡

  1. 已成功使用 OpenTelemetry SDK 或代理进行观测的服务:如果您没有遇到显著的性能问题或成本问题,几乎没有理由迁移到其他类型的观测。(当然,在这种情况下 OBI 可能会有所帮助。)

OBI 的当前局限性(分布式追踪)⚠️

OBI 在收集指标和服务图方面表现出色,但对特定语言和技术的分布式追踪支持尚未完善。

例如,它目前无法很好地处理响应式编程框架、Java 虚拟线程或复杂线程池的分布式追踪。

  • 运行良好的情况:Go (HTTP, gRPC), Node.js (HTTP), Python (HTTP), NGINX (HTTP), PHP (HTTP/FPM)
  • 支持可能有所不同的情况:其他编程语言的支持水平可能会因应用程序内部管理线程和连接的方式而有很大差异。

社区目前正在寻求贡献,以更广泛地扩展这种分布式追踪支持!


总结 📝

我们相信可观测性应该是现代基础设施的内置功能,而不是额外的成本中心。

使用 OpenTelemetry eBPF Instrumentation (OBI),您只需一条命令行即可为您的环境添加必要的遥测捕获。再也没有不使用 OpenTelemetry 的借口了。😅 无需付出努力,无需停机,无需更改代码或配置。现在就有充分的理由立即尝试!


开始使用 OBI 🏁

开始使用 OpenTelemetry eBPF Instrumentation (OBI) 非常简单!

  • 独立运行 (standalone)
  • Docker 镜像
  • Kubernetes Daemonset(或 Pod Sidecar)

等方式进行部署。有关安装、配置以及如何使用 OBI 运行应用程序的详细信息,请查阅官方入门指南 (Getting Started guide)。

结合了各种编程语言、数据库后端和云服务的 Docker 环境安装示例可在集成测试示例中找到,Kubernetes 示例可在Kubernetes 测试仓库中查看。


下一步和社区 🤝

想与 OBI 团队交流、提出所需功能或获取发布消息吗?


致谢 🙏

本次 Alpha 版本的发布是全球贡献者无数时间和努力的结晶。我们感谢所有为实现这一里程碑贡献了代码、文档、反馈和热情的人们!



Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注