#tracing #service #performance #send

tracing-actions-otlp

将操作跟踪发送到 OpenTelemetry 服务器的 tracing-actions 扩展

5 个不稳定版本

0.3.1 2023 年 6 月 23 日
0.3.0 2023 年 6 月 23 日
0.2.0 2023 年 6 月 21 日
0.1.2 2023 年 6 月 13 日
0.1.0 2023 年 5 月 9 日

#409性能分析

Download history 59/week @ 2024-04-18 75/week @ 2024-04-25 104/week @ 2024-05-02 149/week @ 2024-05-09 56/week @ 2024-05-16 24/week @ 2024-05-23 50/week @ 2024-05-30 76/week @ 2024-06-06 42/week @ 2024-06-13 79/week @ 2024-06-20 108/week @ 2024-06-27 84/week @ 2024-07-04 77/week @ 2024-07-11 149/week @ 2024-07-18 141/week @ 2024-07-25 6/week @ 2024-08-01

每月 392 次下载

Apache-2.0

79KB
1.5K SLoC

tracing-actions-otlp

一个用于消耗操作跟踪并将其提供给 OpenTelemetry 跟踪服务器的 tracing-actions 扩展。

tracing-actions 正在开发中,一些详细资料可能会改变。我们将尽力确保破坏性更改在编译时而不是运行时失败,这样您就可以知道何时规则发生变化。

这与 opentelemetry_otlp 的关系

简而言之,没有关系。

tracing-actions 没有像 tracing-subscriberopentelemetry_otlp 那样通用。它跟踪最新的上游代码 - 欢迎提交 pr,并且会及时处理。您的服务不会锁定在旧版本的 tonic 上。


lib.rs:

Rust 跟踪和 OpenTelemetry 跟踪之间的桥梁。

tracing-actions-otlp 是一个 tracing-actions 汇聚器,用于将跟踪发送到以 OpenTelemetry 跟踪格式监听的服务器。该服务器可能是您的 NAS 上的 OpenTelemetry 汇聚器,或者像 Honeycomb 或 Lightstep 这样的服务。

您的批次由 ActionSpans 在堆上构建,然后发送。这里没有后台计时器来刷新您的管道。如果您需要确保跟踪不会在批次中停留太长时间,您可以调用 drain_batch

fn periodic_job(otlp_sink: &tracing_actions_otlp::OtlpActionTraceSink) {
    otlp_sink.drain_batch();
}

示例

Lightstep

use tracing_actions;
use tracing_actions_otlp;

// First, we set up our trace sink.
let batch_size = 1024;
let secure = true;
let otlp_sink = tracing_actions_otlp::OtlpActionTraceSink::new(
    "https://ingest.lightstep.com:443",
    tracing_actions_otlp::header_interceptor(vec![
        ("lightstep-access-token", std::env::var("token").unwrap_or_else(|_| "none".to_string())),
    ]),
    batch_size,
    secure,
    tracing_actions_otlp::OtlpAttributes {
        service_name: "docs-rs example".to_string(),
        other_attributes: None,
    }
).expect("should be able to make otlp sink");


// Next, we configure a subscriber (just like any usage of `tracing-actions`)
let level = "debug".parse().unwrap();
let k_logging_subscriber = tracing_actions::ActionTraceSubscriber::new(
    level,
    otlp_sink,
    tracing_actions::span_constructor::LazySpanCache::default(),
);

// Finally, we install the subscriber.
tracing::subscriber::set_global_default(k_logging_subscriber)
    .expect("I should be able to set the global trace subscriber");

// Now the rest of your application will emit ActionSpans as opentelemetry spans to Lightstep.

依赖关系

~17–28MB
~507K SLoC