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

```rust use opentelemetryapi::{trace::Tracer, global, KeyValue}; use opentelemetrysdk::Resource;

[tokio::main]

pub async fn main() { let tracer = match otlpexporter::newpipeline() .trace() .withenv() .withtracerconfig( opentelemetrysdk::trace::config().withresource(Resource::new(vec![KeyValue::new( opentelemetrysemanticconventions::resource::SERVICENAME, "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();

} ```

```rust use opentelemetryapi::{trace::Tracer, global, KeyValue}; use opentelemetrysdk::{runtime::Tokio, Resource};

[tokio::main]

pub async fn main() { let tracer = match otlpexporter::newpipeline() .trace() .withenv() .withtracerconfig( opentelemetrysdk::trace::config().withresource(Resource::new(vec![KeyValue::new( opentelemetrysemanticconventions::resource::SERVICENAME, "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();

} ```