21 个重大版本发布

0.22.0 2024 年 5 月 15 日
0.21.0 2024 年 2 月 25 日
0.20.0 2023 年 11 月 6 日
0.19.0 2023 年 7 月 30 日
0.2.0 2020 年 3 月 24 日

#jaeger 中排名 29

Download history 100001/week @ 2024-04-16 104520/week @ 2024-04-23 83711/week @ 2024-04-30 96677/week @ 2024-05-07 92538/week @ 2024-05-14 86786/week @ 2024-05-21 85639/week @ 2024-05-28 76092/week @ 2024-06-04 84434/week @ 2024-06-11 84035/week @ 2024-06-18 85511/week @ 2024-06-25 68100/week @ 2024-07-02 82061/week @ 2024-07-09 85687/week @ 2024-07-16 76421/week @ 2024-07-23 78067/week @ 2024-07-30

每月下载量 336,623
75 (46 直接) 仓库中使用

Apache-2.0

1.5MB
23K SLoC

OpenTelemetry — An observability framework for cloud-native software.

OpenTelemetry Jaeger (已弃用)

警告 截至 Jaeger 1.35.0 版本,该版本于 2022 年 9 月发布,OpenTelemetry 协议 (OTLP) 的摄入已稳定,因此,OpenTelemetry SDK 中的特定语言 Jaeger 导出器已被 OpenTelemetry 项目 建议弃用。更多信息和使用 OTLP 与 Jaeger 的示例可以在 在 Jaeger 中引入 OpenTelemetry 的原生支持将 OTLP 跟踪导出到 Jaeger 中找到。

opentelemetry-jaeger crate 之前包含了一个 Jaeger 导出器和 Jaeger 传播器。为了准备弃用 Jaeger 导出器,Jaeger 传播器实现已迁移到 opentelemetry-jaeger-propagator

0.22.0 是 Jaeger 导出器的最后一个版本。这意味着 OpenTelemetry SDK 的未来版本将无法与该导出器兼容。

如果您有任何问题,请在此处评论 Jaeger 弃用问题

用于用 OpenTelemetry 仪器化的应用程序的 Jaeger 集成。这包括一个 jaeger 导出器和 jaeger 传播器。

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

概述

OpenTelemetry 是一套工具、API 和 SDK 的集合,用于对软件的性能和行为进行监控,生成、收集和导出遥测数据(指标、日志和跟踪),以便进行分析。该包提供了一个跟踪管道和导出器,用于将跨度信息发送到 Jaeger agentcollector 端点,以进行处理和可视化。

编译器支持:需要 rustc 1.65+

快速入门

首先确保您有一个正在运行的 Jaeger 实例,您想向其发送数据

$ docker run -d -p6831:6831/udp -p6832:6832/udp -p16686:16686 -p14268:14268 jaegertracing/all-in-one:latest

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

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

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

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

    global::shutdown_tracer_provider(); // sending remaining spans

    Ok(())
}

Jaeger UI

性能

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

[dependencies]
opentelemetry_sdk = { version = "*", features = ["rt-tokio"] }
opentelemetry-jaeger = { version = "*", features = ["rt-tokio"] }
let tracer = opentelemetry_jaeger::new_agent_pipeline()
    .install_batch(opentelemetry_sdk::runtime::Tokio)?;

从环境变量中配置 Jaeger 导出器

Jaeger 管道构建器可以通过环境变量动态配置。所有变量都是可选的,接受的选项完整列表可以在 jaeger 变量规范 中找到。

Jaeger 收集器示例

如果您想跳过代理并直接将跨度提交给 Jaeger 收集器,您可以为该包启用可选的 collector_client 功能。此示例假设 Jaeger 收集器正在 https://127.0.0.1:14268 上运行。

[dependencies]
opentelemetry-jaeger = { version = "..", features = ["isahc_collector_client"] }

然后您可以使用 with_collector_endpoint 方法指定端点

// Note that this requires one of the following features enabled so that there is a default http client implementation
// * hyper_collector_client
// * reqwest_collector_client
// * reqwest_blocking_collector_client
// * reqwest_rustls_collector_client
// * isahc_collector_client

// You can also provide your own implementation by enable
// `collector_client` and set it with
// new_pipeline().with_http_client() method.
use opentelemetry::trace::Tracer;

fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
    let tracer = opentelemetry_jaeger::new_collector_pipeline()
        .with_endpoint("https://127.0.0.1:14268/api/traces")
        // optionally set username and password as well.
        .with_username("username")
        .with_password("s3cr3t")
        .install_batch()?;

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

    opentelemetry::global::shutdown_tracer_provider(); // sending remaining spans

    Ok(())
}

厨房水槽完整配置

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

支持的 Rust 版本

OpenTelemetry 是针对最新稳定版本构建的。最低支持版本是 1.65。不能保证当前 OpenTelemetry 版本可以在低于最低支持版本的 Rust 版本上构建。

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

依赖项

~3–23MB
~302K SLoC