1 个不稳定版本
| 0.13.0-beta.1 | 2023年6月19日 |
|---|
#5 in #otlp
1.5MB
25K SLoC

OpenTelemetry Collector Rust 导出器
OTLP 集成,适用于使用 OpenTelemetry 仪器化的应用程序。
概述
OpenTelemetry 是一套用于仪器化、生成、收集和导出遥测数据(指标、日志和跟踪)的工具、API 和 SDK,以便分析软件的性能和行为。
此 crate 提供了一个导出器,用于将跟踪和指标数据以 OTLP 格式发送到 OpenTelemetry 收集器。OpenTelemetry 收集器提供了一个供应商无关的实现,用于接收、处理和导出遥测数据。此外,它消除了运行、操作和维护多个代理/收集器以支持开源遥测数据格式(例如 Jaeger、Prometheus 等)的需要,以便发送到多个开源或商业后端。
快速入门
首先确保你有一个正在运行的 opentelemetry 收集器版本,你想向其发送数据。
$ docker run -p 4317:4317 otel/opentelemetry-collector-dev:latest
然后安装一个新的管道,使用推荐的默认值开始导出遥测数据。
use opentelemetry::trace::Tracer;
fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
// use tonic as grpc layer here.
// If you want to use grpcio. enable `grpc-sys` feature and use with_grpcio function here.
let tracer = opentelemetry_otlp::new_pipeline()
.tracing()
.with_exporter(opentelemetry_otlp::new_exporter().tonic())
.install_simple()?;
tracer.in_span("doing_work", |cx| {
// Traced app logic here...
});
Ok(())
}
性能
为了获得最佳性能,建议使用批量导出器,因为简单导出器会在释放时同步导出每个跨度。你可以启用 rt-tokio、rt-tokio-current-thread 或 rt-async-std 功能,并在管道构建器上指定一个运行时,以便自动为你配置批量导出器。
[dependencies]
opentelemetry = { version = "*", features = ["async-std"] }
opentelemetry-otlp = { version = "*", features = ["grpc-sys"] }
let tracer = opentelemetry_otlp::new_pipeline()
.install_batch(opentelemetry::runtime::AsyncStd)?;
厨房水槽完整配置
示例 显示如何覆盖所有配置选项。
通常配置分为两部分。一部分是指标配置或跟踪配置。用户可以通过 OtlpTracePipeline 或 OtlpMetricPipeline 来配置。另一部分是导出配置。用户可以根据导出器的选择使用 OtlpExporterPipeline 来设置这些配置。
gRPC 库比较
提供了多种 gRPC 传输层。默认的 gRPC 传输层是 tonic,默认启用。可选的是 grpcio。
| gRPC 传输层 | hyperium/tonic | tikv/grpc-rs |
|---|---|---|
| 功能 | --features=default | --features=grpc-sys |
| gRPC 库 | tonic |
grpcio |
| 传输 | hyperium/hyper (Rust) | grpc/grpc (C++ 绑定) |
| TLS 支持 | 是 | 是 |
| TLS 库 | rustls | OpenSSL |
| TLS 可选 | 是 | 是 |
| 支持的 .proto 生成器 | prost |
prost,protobuf |
依赖
~6–27MB
~429K SLoC