OpenTelemetry Protocol with Apache Arrow - Phase 2 Announcement
我们很高兴地宣布 OpenTelemetry Protocol with Apache Arrow 项目(OTel-Arrow)的下一阶段。几年前,我们启动了这个项目,目标是连接 OpenTelemetry 数据和 Apache Arrow 生态系统。Apache Arrow 是一个为面向列的数据生产者和消费者之间进行零拷贝数据交换而设计的框架。
我们相信,通过 Apache Arrow 使 OpenTelemetry 数据可供外部系统访问,将带来强大的集成,并有可能涌现新的遥测系统和应用程序。对于大量的遥测数据流,我们知道面向列的数据处理效率要高得多,具有改进的数据压缩和性能。
我们选择用 Rust 来研究项目的这一阶段。在 OpenTelemetry 治理委员会的帮助下,我们定义了一个项目范围,包括研究基于 Rust 的 OpenTelemetry 管道的潜力,而“不成为”一个 Collector。我们将研究 Rust 管道的性能,以及如何成功地将我们的工作与 OpenTelemetry Collector 的 Golang 生态系统集成。
该项目旨在验证我们最初的假设。我们正在研究,如果我们从头到尾使用零拷贝、面向列的范例,从 SDK 开始,并在管道中进行传递,会发生什么,以及什么才可能实现。
我们注意到:Rust 生态系统中围绕 Apache Arrow 的项目非常庞大且充满活力,我们认为不探索这个领域将是一种错失。我们特别有兴趣将 Apache DataFusion 库与 OpenTelemetry 管道连接起来,我们相信 OpenTelemetry 用户将受益于与其数据湖更直接的集成。
我们致力于在 Rust 中构建一个端到端的 OTAP 管道,其中遥测数据在生成时就被放入 Arrow 记录批次中。OTel-Arrow 项目在探索这一机会时,预计将与 OpenTelemetry-Rust SDK 紧密合作。我们有兴趣通过严格的内存控制和对线程-每核心运行时的支持,使 OTAP 管道能够安全地嵌入。
在项目的第一阶段,我们通过一个 Golang 适配器库以及 OpenTelemetry Collector Contrib 仓库中的一对 Exporter 和 Receiver 组件开发了协议。我们将继续维护这些组件,确保 Go 和 Rust 管道之间没有障碍,并且我们将继续履行这一承诺。我们将确保 OTAP 管道可以从 OpenTelemetry Collector 中执行。我们也希望让用 Rust 编写的 OTAP 管道能够访问 Golang Collector 组件。
为了启动项目的第二阶段,F5 的 Laurent Quérel 贡献了他的原始 OTel-Arrow 原型的底层工作,一个基于 Rust 的管道框架,该框架模仿了 OpenTelemetry Collector。Greptime 的 Lei Huang 贡献了将指标信号从 OTAP 转换为 OTLP 的 Rust 实现。
了解更多
新成立的 OTel-Arrow SIG 在 OpenTelemetry 日历上有一个会议时段。届时见!