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 在 调试 中
3,583,232 每月下载量
在 865 个代码包中 使用 (287 个直接使用)
270KB
4.5K SLoC
OpenTelemetry Rust API
此代码包包含用于 Rust 的 OpenTelemetry API。
概述
OpenTelemetry 是一个可观测性框架和工具包,旨在创建和管理遥测数据,例如跟踪、指标和日志。OpenTelemetry 与供应商和工具无关,这意味着它可以与各种可观测性后端一起使用,包括开源工具如 Jaeger 和 Prometheus,以及商业产品。
OpenTelemetry 不是 如 Jaeger、Prometheus 或其他商业供应商的可观测性后端。OpenTelemetry 专注于遥测的生成、收集、管理和导出。OpenTelemetry 的一个主要目标是您能够轻松地对应用程序或系统进行仪器化,无论其语言、基础设施或运行时环境如何。关键的是,遥测的存储和可视化有意留给其他工具。
编译器支持:需要 rustc
1.65+
此代码包包含什么内容?
此代码包是集成 OpenTelemetry 到库和应用程序的基本基础,包括 OpenTelemetry 的多个方面,如上下文管理、传播、行李、日志记录、跟踪和指标。它遵循 OpenTelemetry 规范。以下是其组件的分解
- 上下文 API: 提供一种管理上下文并跨异步任务传播上下文的方法,这对于跟踪执行至关重要。
- 传播者 API: 定义了如何跨进程边界共享上下文,确保在微服务或分布式系统之间保持连续性。
- Baggage API: 允许将元数据(行李)附加到遥测数据,可用于在服务边界之间共享应用程序特定的信息。
- 日志桥接API: 允许将现有的日志机制与OpenTelemetry日志桥接。这不是为最终用户调用的,而是为了启用为现有的日志机制编写桥接器/附加器,例如 log 或 tracing。
- 跟踪API: 提供一组原语以生成分布式跟踪,以了解请求在系统边界之间的流动。
- 度量API: 提供一组原语以生成操作度量的测量值,如延迟、吞吐量或错误率。
该crate充当一个门面或无操作实现,这意味着它定义了仪器的特质,但本身并不实现遥测数据的处理或导出。这种关注点的分离允许库作者依赖于API crate,而不必绑定到特定的实现。
实际的实现和遥测数据收集、处理和导出的繁重工作委托给 opentelemetry-sdk crate 和各种导出器crate,例如 opentelemetry-otlp。这种架构确保最终应用程序可以通过集成SDK实现来启用仪器。
建议库作者只依赖于这个crate。这种方法也与Rust生态系统中的现有遥测解决方案的设计哲学相一致,如 tracing
或 log
,在这些crate中,它们只提供门面,而实际功能通过额外的crate启用。
相关crate
除非你是库作者,否则你几乎总是需要使用此crate的附加crate。鉴于这个crate仅提供无操作实现,始终需要OpenTelemetry SDK。 opentelemetry-sdk 是OpenTelemetry自己实现的官方SDK,尽管也可以使用不同的sdk。
此外,还需要一个或多个导出器以将遥测数据导出到目的地。OpenTelemetry提供了以下导出器
- opentelemetry-stdout: 将遥测数据打印到stdout,主要用于学习/调试目的。
- opentelemetry-otlp: 以OTLP格式导出遥测数据(日志、指标和跟踪)到接受OTLP的端点。这可能是 OTel Collector、遥测后端如 Jaeger、Prometheus 或 特定供应商的端点。
- opentelemetry-zipkin: 根据 OpenTelemetry到Zipkin规范 将遥测数据(仅跟踪)导出到Zipkin。
- opentelemetry-prometheus: 根据 OpenTelemetry到Prometheus规范 将遥测数据(仅指标)导出到Prometheus。
OpenTelemetry Rust还有一个 contrib仓库,其中可以找到额外的导出器。检查 OpenTelemetry注册表 以获取额外的导出器和相关组件。
入门指南
请参阅 文档。
支持的Rust版本
OpenTelemetry 基于最新的稳定版构建。最低支持的版本是 1.65。当前 OpenTelemetry 版本不保证能够在低于最低支持版本的 Rust 版本上构建。
当前稳定 Rust 编译器和它之前的三个最近的次要版本将始终得到支持。例如,如果当前稳定编译器版本是 1.49,最低支持的版本不会超过 1.46,即三个次要版本之前的版本。只要这样做符合此政策,增加最低支持的编译器版本不被视为 semver 破坏性更改。
依赖项
~0.3–1MB
~21K SLoC