22 个重大版本发布

0.22.0 2024年7月23日
0.20.0 2024年2月25日
0.19.0 2023年11月6日
0.18.0 2023年7月30日
0.0.1 2020年3月24日

#859 in 调试

Download history 9681/week @ 2024-05-01 8545/week @ 2024-05-08 9517/week @ 2024-05-15 10096/week @ 2024-05-22 11134/week @ 2024-05-29 9655/week @ 2024-06-05 11983/week @ 2024-06-12 10747/week @ 2024-06-19 13076/week @ 2024-06-26 8348/week @ 2024-07-03 9755/week @ 2024-07-10 10189/week @ 2024-07-17 12389/week @ 2024-07-24 10045/week @ 2024-07-31 9939/week @ 2024-08-07 8710/week @ 2024-08-14

43,643 每月下载量
用于 12 个库(直接使用6个)

Apache-2.0

1.5MB
20K SLoC

OpenTelemetry Zipkin Exporter

OpenTelemetry — An observability framework for cloud-native software.

Zipkin 的集成,用于使用 OpenTelemetry 仪器化的应用程序。

Crates.io: opentelemetry-zipkin Documentation LICENSE GitHub Actions CI Slack

OpenTelemetry概述

OpenTelemetry是一个可观察性框架和工具包,旨在创建和管理遥测数据,例如跟踪、指标和日志。OpenTelemetry是供应商和工具无关的,这意味着它可以与广泛的可观察性后端一起使用,包括开源工具[Jaeger]和[Prometheus],以及商业产品。

OpenTelemetry 不是 如Jaeger、Prometheus或其他商业供应商的可观察性后端。OpenTelemetry专注于遥测的生成、收集、管理和导出。OpenTelemetry的主要目标之一是您可以轻松地为应用程序或系统添加仪器,无论它们的语言、基础设施或运行时环境如何。关键的是,遥测的存储和可视化有意留给了其他工具。

快速入门

首先确保您有一个运行中的zipkin进程,您想要向其发送数据

$ docker run -d -p 9411:9411 openzipkin/zipkin

然后安装一个新的管道,使用推荐的默认值开始导出遥测

use opentelemetry::trace::Tracer;
use opentelemetry::global;

fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
    global::set_text_map_propagator(opentelemetry_zipkin::Propagator::new());
    let tracer = opentelemetry_zipkin::new_pipeline().install_simple()?;

    tracer.in_span("doing_work", |cx| {
        // Traced app logic here...
    });

    global::shutdown_tracer_provider();

    Ok(())
}

性能

为了最佳性能,建议使用批量导出器,因为简单导出器会在释放时同步导出每个span。您可以通过启用rt-tokiort-tokio-current-threadrt-async-std功能,并在管道构建器上指定一个运行时,来自动为您配置批量导出器。

[dependencies]
opentelemetry = { version = "*", features = ["rt-tokio"] }
opentelemetry-zipkin = { version = "*", features = ["reqwest-client"], default-features = false }
let tracer = opentelemetry_zipkin::new_pipeline()
    .install_batch(opentelemetry_sdk::runtime::Tokio)?;

选择HTTP客户端

此导出器将使用的HTTP客户端可以使用功能或HttpClient特质的手动实现来覆盖。默认情况下,启用了reqwest-blocking-client功能,这将使用reqwest包。虽然它与异步和非异步项目都兼容,但它不适合高性能异步应用程序,因为它会阻塞执行器线程。如果您处于tokio生态系统,请考虑使用不带阻塞的reqwest-client

请注意,异步HTTP客户端可能需要特定的异步运行时,因此请确保它们相匹配。

完整配置示例

示例展示了如何覆盖所有配置选项。有关每个选项的详细信息,请参阅ZipkinPipelineBuilder文档。

支持的Rust版本

OpenTelemetry基于最新的稳定版本构建。最低支持版本为1.65。当前OpenTelemetry版本不一定可以在低于最低支持版本的Rust版本上构建。

当前稳定的Rust编译器和它之前最近的三个次要版本将始终得到支持。例如,如果当前稳定的编译器版本是1.49,则最低支持版本不会超过1.46,即三个次要版本之前。只要这样做符合此政策,增加最低支持编译器版本不被视为semver破坏性更改。

依赖项

~4–16MB
~249K SLoC