Crate otlp_exporter

Crate otlp_exporter 

Source
Expand description

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

protocoltracemetriclog
grpc(tonic)
grpc(grpcio)1
http/protobuf
http/jsonblocking

§TLS

depstdprovided caclient key
tonicnot testnot testnot test
grpcionot testnot testnot test
reqwestnot testnot testnot 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();
}

  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. 

Modules§

config
OTLP exporter configurations.
error

Structs§

Pipeline

Functions§

new_pipeline
Create a pipeline builder.