32 个版本 (重大更改)

0.24.0 2024年7月15日
0.22.0 2024年2月25日
0.21.0 2023年11月6日
0.20.0 2023年7月30日
0.1.5 2019年11月26日

#6调试

Download history 548744/week @ 2024-05-03 605484/week @ 2024-05-10 624059/week @ 2024-05-17 604991/week @ 2024-05-24 658211/week @ 2024-05-31 673231/week @ 2024-06-07 641314/week @ 2024-06-14 686627/week @ 2024-06-21 647647/week @ 2024-06-28 668063/week @ 2024-07-05 664962/week @ 2024-07-12 688348/week @ 2024-07-19 774592/week @ 2024-07-26 804342/week @ 2024-08-02 916301/week @ 2024-08-09 937781/week @ 2024-08-16

3,583,232 每月下载量
865 个代码包中 使用 (287 个直接使用)

Apache-2.0

270KB
4.5K SLoC

OpenTelemetry Rust API

OpenTelemetry — An observability framework for cloud-native software.

此代码包包含用于 Rust 的 OpenTelemetry API。

Crates.io: opentelemetry Documentation LICENSE GitHub Actions CI codecov Slack

概述

OpenTelemetry 是一个可观测性框架和工具包,旨在创建和管理遥测数据,例如跟踪、指标和日志。OpenTelemetry 与供应商和工具无关,这意味着它可以与各种可观测性后端一起使用,包括开源工具如 JaegerPrometheus,以及商业产品。

OpenTelemetry 不是 如 Jaeger、Prometheus 或其他商业供应商的可观测性后端。OpenTelemetry 专注于遥测的生成、收集、管理和导出。OpenTelemetry 的一个主要目标是您能够轻松地对应用程序或系统进行仪器化,无论其语言、基础设施或运行时环境如何。关键的是,遥测的存储和可视化有意留给其他工具。

编译器支持:需要 rustc 1.65+

此代码包包含什么内容?

此代码包是集成 OpenTelemetry 到库和应用程序的基本基础,包括 OpenTelemetry 的多个方面,如上下文管理、传播、行李、日志记录、跟踪和指标。它遵循 OpenTelemetry 规范。以下是其组件的分解

  • 上下文 API: 提供一种管理上下文并跨异步任务传播上下文的方法,这对于跟踪执行至关重要。
  • 传播者 API: 定义了如何跨进程边界共享上下文,确保在微服务或分布式系统之间保持连续性。
  • Baggage API: 允许将元数据(行李)附加到遥测数据,可用于在服务边界之间共享应用程序特定的信息。
  • 日志桥接API: 允许将现有的日志机制与OpenTelemetry日志桥接。这不是为最终用户调用的,而是为了启用为现有的日志机制编写桥接器/附加器,例如 logtracing
  • 跟踪API: 提供一组原语以生成分布式跟踪,以了解请求在系统边界之间的流动。
  • 度量API: 提供一组原语以生成操作度量的测量值,如延迟、吞吐量或错误率。

该crate充当一个门面或无操作实现,这意味着它定义了仪器的特质,但本身并不实现遥测数据的处理或导出。这种关注点的分离允许库作者依赖于API crate,而不必绑定到特定的实现。

实际的实现和遥测数据收集、处理和导出的繁重工作委托给 opentelemetry-sdk crate 和各种导出器crate,例如 opentelemetry-otlp。这种架构确保最终应用程序可以通过集成SDK实现来启用仪器。

建议库作者只依赖于这个crate。这种方法也与Rust生态系统中的现有遥测解决方案的设计哲学相一致,如 tracinglog,在这些crate中,它们只提供门面,而实际功能通过额外的crate启用。

除非你是库作者,否则你几乎总是需要使用此crate的附加crate。鉴于这个crate仅提供无操作实现,始终需要OpenTelemetry SDK。 opentelemetry-sdk 是OpenTelemetry自己实现的官方SDK,尽管也可以使用不同的sdk。

此外,还需要一个或多个导出器以将遥测数据导出到目的地。OpenTelemetry提供了以下导出器

OpenTelemetry Rust还有一个 contrib仓库,其中可以找到额外的导出器。检查 OpenTelemetry注册表 以获取额外的导出器和相关组件。

入门指南

请参阅 文档

支持的Rust版本

OpenTelemetry 基于最新的稳定版构建。最低支持的版本是 1.65。当前 OpenTelemetry 版本不保证能够在低于最低支持版本的 Rust 版本上构建。

当前稳定 Rust 编译器和它之前的三个最近的次要版本将始终得到支持。例如,如果当前稳定编译器版本是 1.49,最低支持的版本不会超过 1.46,即三个次要版本之前的版本。只要这样做符合此政策,增加最低支持的编译器版本不被视为 semver 破坏性更改。

依赖项

~0.3–1MB
~21K SLoC