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
每月下载量 336,623
在 75 个 (46 直接) 仓库中使用
1.5MB
23K SLoC
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 传播器。
概述
OpenTelemetry
是一套工具、API 和 SDK 的集合,用于对软件的性能和行为进行监控,生成、收集和导出遥测数据(指标、日志和跟踪),以便进行分析。该包提供了一个跟踪管道和导出器,用于将跨度信息发送到 Jaeger agent
或 collector
端点,以进行处理和可视化。
编译器支持:需要 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(())
}
性能
为了获得最佳性能,建议使用批量导出器,因为简单导出器将在释放时同步导出每个跨度。您可以通过启用 rt-tokio
、rt-tokio-current-thread
或 rt-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