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

Structs

Functions