OpenTelemetry Rust
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 概览
以下 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 格式向接受 OTLP 的端点发送遥测数据(日志、指标和追踪)的导出器。这可以是 OTel Collector、遥测后端如 Jaeger、Prometheus 或特定供应商的端点。opentelemetry-stdout
用于将日志、指标和追踪发送到标准输出的导出器,用于学习/调试目的。opentelemetry-http
这个 crate 包含帮助通过http
导出遥测数据和进行传播的实用函数。opentelemetry-appender-log
这个 crate 提供日志附加器,用于将使用 log crate 发出的日志路由到 opentelemetry。opentelemetry-appender-tracing
这个 crate 提供日志附加器,用于将使用 tracing crate 发出的日志路由到 opentelemetry。opentelemetry-jaeger-propagator
提供使用 jaeger 传播格式的上下文传播。opentelemetry-prometheus
提供用于向Prometheus
发送指标的管道和导出器。opentelemetry-semantic-conventions
提供标准名称和语义 otel 约定。opentelemetry-zipkin
提供用于向Zipkin
发送追踪的管道和导出器。
此外,在 OTel Rust Contrib 仓库中还有几个其他有用的 crates。在 OpenTelemetry 拥有的仓库之外维护的许多 crates 可以在 OpenTelemetry 注册表中找到。
支持的 Rust 版本
OpenTelemetry 基于最新的稳定版本构建。最低支持版本为 1.65。当前的 OpenTelemetry 版本不保证能在早于最低支持版本的 Rust 版本上构建。
当前稳定的 Rust 编译器版本以及之前的三个最新次要版本将始终得到支持。例如,如果当前稳定的编译器版本是 1.49,则最低支持版本不会增加到 1.46 之后的版本,即前三个次要版本。只要符合此政策,增加最低支持的编译器版本不被视为破坏性的 semver 更改。
贡献
请参阅贡献文件。
Rust 特别兴趣小组(SIG)每周二上午 9 点(太平洋时间)开会。会议时间可能会根据贡献者的可用性而变化。请查看 OpenTelemetry 社区日历以获取具体日期和 Zoom 会议链接。该小组的会议名称为 "OTel Rust SIG"。
会议记录以公开的 Google 文档形式提供。如果您无法访问该文档,请通过 Slack 联系我们。
会议对所有人开放。无论您是经验丰富的 OpenTelemetry 开发者、刚刚开始您的旅程,还是只是对我们的工作感到好奇,我们都邀请每个人参加我们的会议!