24个重大版本更新
0.25.0 | 2024年7月21日 |
---|---|
0.23.0 | 2024年3月5日 |
0.22.0 | 2023年11月7日 |
0.19.0 | 2023年5月23日 |
0.1.0 | 2019年11月20日 |
#3 在 调试 中
2,527,571 每月下载量
在 677 个Crates中使用 (直接使用167个)
145KB
2K SLoC
跟踪OpenTelemetry
为 OpenTelemetry 添加互操作性的工具,以将来自多个系统的跨度连接到跟踪,并将其发送到兼容的分布式跟踪系统进行处理和可视化。
概述
tracing
是一个框架,用于为Rust程序添加仪器,以收集结构化的事件诊断信息。此crate提供了一个订阅者,将来自多个系统的跨度连接到跟踪,并将它们发送到兼容的 OpenTelemetry 分布式跟踪系统进行处理和可视化。
此crate提供以下类型
OpenTelemetryLayer
为所有tracing
跨度 添加OpenTelemetry上下文。OpenTelemetrySpanExt
允许将OpenTelemetry父跟踪信息注入和从tracing
跨度 中提取。
编译器支持:需要 rustc
1.65+
示例
基本使用
use opentelemetry::trace::TracerProvider as _;
use opentelemetry_sdk::trace::TracerProvider;
use opentelemetry_stdout as stdout;
use tracing::{error, span};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::Registry;
fn main() {
// Create a new OpenTelemetry trace pipeline that prints to stdout
let provider = TracerProvider::builder()
.with_simple_exporter(stdout::SpanExporter::default())
.build();
let tracer = provider.tracer("readme_example");
// Create a tracing layer with the configured tracer
let telemetry = tracing_opentelemetry::layer().with_tracer(tracer);
// Use the tracing subscriber `Registry`, or any other subscriber
// that impls `LookupSpan`
let subscriber = Registry::default().with(telemetry);
// Trace executed code
tracing::subscriber::with_default(subscriber, || {
// Spans will be sent to the configured OpenTelemetry exporter
let root = span!(tracing::Level::TRACE, "app_start", work_units = 2);
let _enter = root.enter();
error!("This event will be logged in the root span.");
});
}
Cargo.toml
[dependencies]
opentelemetry = "0.21"
opentelemetry_sdk = "0.21"
opentelemetry-stdout = { version = "0.2.0", features = ["trace"] }
tracing = "0.1"
tracing-opentelemetry = "0.22"
tracing-subscriber = "0.3"
可视化示例
# Run a supported collector like jaeger in the background
$ docker run -d -p4317:4317 -p16686:16686 jaegertracing/all-in-one:latest
# Run example to produce spans (from parent examples directory)
$ cargo run --example opentelemetry-otlp
# View spans (see the image below)
$ firefox https://127.0.0.1:16686/
功能标志
metrics
:启用MetricsLayer
类型,这是一个 层,它可以从特定命名的事件中导出 OpenTelemetry 度量标准。这启用了opentelemetry
包上的metrics
功能标志。
支持的 Rust 版本
Tracing Opentelemetry 是针对最新稳定版构建的。最低支持版本为 1.60。当前 Tracing 版本不一定能在低于最低支持版本的 Rust 版本上构建。
Tracing 遵循 Tokio 项目中其余部分的编译器支持策略。当前稳定 Rust 编译器和其之前的三个小版本将始终得到支持。例如,如果当前稳定编译器版本是 1.45,则最低支持版本不会超过 1.42,即三个小版本之前。只要这样做符合此策略,增加最低支持编译器版本不被视为 semver 破坏性更改。
许可证
本项目采用 MIT 许可证。
贡献
除非您明确声明,否则您提交给 Tracing 的任何贡献,均应按 MIT 许可,不附加任何额外条款或条件。
依赖项
~4.5–6MB
~101K SLoC