otlp-exporter

Crates.iootlp-exporter
lib.rsotlp-exporter
version0.1.0
sourcesrc
created_at2023-08-16 17:18:39.196357
updated_at2023-08-16 17:18:39.196357
descriptionOTLP Exporter for the OpenTelemetry Collector
homepagehttps://github.com/fortime/otlp-exporter/tree/main
repositoryhttps://github.com/fortime/otlp-exporter/tree/main
max_upload_size
id946158
size72,792
fortime (fortime)

documentation

README

THIS IS A PERSONAL PROJECT. IT IS STILL IN DEVELOPMENT. USE ON YOUR OWN RISK.

An exporter exports trace, metric and log data in the OTLP format.

Support Matrix

Protocol

protocol trace metric log
grpc(tonic)
grpc(grpcio)1
http/protobuf
http/json blocking

TLS

dep std provided ca client key
tonic not test not test not test
grpcio not test not test not test
reqwest not test not test not test

Examples

  • For grpc, we can use install_simple simply. It uses future_executors.
use opentelemetry_api::{trace::Tracer, global, KeyValue};
use opentelemetry_sdk::Resource;

#[tokio::main]
pub async fn main() {
    let tracer = match otlp_exporter::new_pipeline()
        .trace()
        .with_env()
        .with_tracer_config(
            opentelemetry_sdk::trace::config().with_resource(Resource::new(vec![KeyValue::new(
                opentelemetry_semantic_conventions::resource::SERVICE_NAME,
                "otlp-exporter-example",
            )])),
        )
        .install_simple()
    {
        Ok(tracer) => tracer,
        Err(e) => {
            println!("error: {e}");
            return;
        }
    };

    tracer.in_span("otlp-exporter trace example", |_cx| {});

    global::shutdown_tracer_provider();
}
  • For http/protocol and http/json, it depends on reqwest which depends on tokio. So, we must use install_batch with Tokio.
use opentelemetry_api::{trace::Tracer, global, KeyValue};
use opentelemetry_sdk::{runtime::Tokio, Resource};

#[tokio::main]
pub async fn main() {
    let tracer = match otlp_exporter::new_pipeline()
        .trace()
        .with_env()
        .with_tracer_config(
            opentelemetry_sdk::trace::config().with_resource(Resource::new(vec![KeyValue::new(
                opentelemetry_semantic_conventions::resource::SERVICE_NAME,
                "otlp-exporter-example",
            )])),
        )
        .install_batch(Tokio)
    {
        Ok(tracer) => tracer,
        Err(e) => {
            println!("error: {e}");
            return;
        }
    };

    tracer.in_span("otlp-exporter trace example", |_cx| {});

    global::shutdown_tracer_provider();
}

Footnotes

  1. As of 2023-08-16, grpc 0.12.1 can't be compiled with gcc 13, you can patch it with its git repo.

Commit count: 0

cargo fmt