#otlp #open-telemetry #metrics #logging-tracing #tracing #logging

ts_opentelemetry_otlp

这是 OpenTelemetry Collector 导出器的分支。

1 个不稳定版本

0.13.0-beta.12023年6月19日

#5 in #otlp

Apache-2.0

1.5MB
25K SLoC

OpenTelemetry — An observability framework for cloud-native software.

OpenTelemetry Collector Rust 导出器

OTLP 集成,适用于使用 OpenTelemetry 仪器化的应用程序。

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

概述

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-tokiort-tokio-current-threadrt-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)?;

厨房水槽完整配置

示例 显示如何覆盖所有配置选项。

通常配置分为两部分。一部分是指标配置或跟踪配置。用户可以通过 OtlpTracePipelineOtlpMetricPipeline 来配置。另一部分是导出配置。用户可以根据导出器的选择使用 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 prostprotobuf

依赖

~6–27MB
~429K SLoC