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