Rust OpenTelemetry 的实现。
OpenTelemetry 是一系列工具、API 和 SDK 的集合,用于对软件进行检测、生成、收集和导出遥测数据(指标、日志和追踪),以便分析和了解软件的性能和行为。您可以使用 Prometheus、Jaeger 和其他可观测性工具来导出和分析这些数据。
编译器支持:需要 rustc
1.65+
信号/组件 | 总体状态 |
---|---|
日志-API | Beta* |
日志-SDK | Beta |
日志-OTLP 导出器 | Beta |
日志-Appender-Tracing | Beta |
指标-API | Alpha |
指标-SDK | Alpha |
指标-OTLP 导出器 | Alpha |
追踪-API | Beta |
追踪-SDK | Beta |
追踪-OTLP 导出器 | Beta |
*OpenTelemetry Rust 不会引入新的终端用户可调用的日志 API。相反,它提供了日志桥接 API,允许编写日志附加器,将现有日志库桥接到 OpenTelemetry 日志数据模型。以下日志附加器可用:
如果您已经在使用上述日志 API,请继续使用它们,并使用上述附加器将日志桥接到 OpenTelemetry。如果您使用的库未在此列出,欢迎为其贡献新的附加器。
如果您是从头开始,可以考虑使用 tracing 作为您的日志 API。它支持结构化日志记录,并得到积极维护。
项目版本信息和稳定性保证可以在此处找到。
use opentelemetry::{ global, trace::{Tracer, TracerProvider as _}, }; use opentelemetry_sdk::trace::TracerProvider; fn main() { // 创建一个新的追踪管道,输出到 stdout let provider = TracerProvider::builder() .with_simple_exporter(opentelemetry_stdout::SpanExporter::default()) .build(); let tracer = provider.tracer("readme_example"); tracer.in_span("doing_work", |cx| { // 此处放置被追踪的应用逻辑... }); // 关闭追踪管道 global::shutdown_tracer_provider(); }
上述示例需要以下包:
# Cargo.toml [dependencies] opentelemetry = "0.22" opentelemetry_sdk = "0.22" opentelemetry-stdout = { version = "0.3", features = ["trace"] }
查看 examples 目录以了解不同的集成模式。
以下 crates 在本仓库中维护:
opentelemetry
这是 OpenTelemetry API crate,是用于检测库和应用程序所需的 crate。它包含上下文 API、Baggage API、传播器 API、日志桥接 API、指标 API 和追踪 API。opentelemetry-sdk
这是 OpenTelemetry SDK crate,包含官方的 OpenTelemetry SDK 实现。它包含日志 SDK、指标 SDK 和追踪 SDK。它还包含传播器实现。opentelemetry-otlp
- 用于以 OTLP 格式