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 调试
43,643 每月下载量
用于 12 个库(直接使用6个)
1.5MB
20K SLoC
OpenTelemetry Zipkin Exporter
Zipkin
的集成,用于使用 OpenTelemetry
仪器化的应用程序。
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-tokio
、rt-tokio-current-thread
或rt-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