minitrace-opentelemetry

Documentation Crates.io LICENSE

OpenTelemetry reporter for minitrace.

Dependencies

toml [dependencies] minitrace = "0.5" minitrace-opentelemetry = "0.5"

Setup OpenTelemetry Collector

```sh cd minitrace-opentelemetry/examples docker compose up -d

cargo run --example synchronous ```

Jaeger UI is available on http://127.0.0.1:16686/

Zipkin UI is available on http://127.0.0.1:9411/

Report to OpenTelemetry Collector

```rust, norun use std::borrow::Cow; use std::time::Duration; use minitrace::collector::Config; use minitrace::prelude::*; use minitraceopentelemetry::OpenTelemetryReporter; use opentelemetry_otlp::{SpanExporter, ExportConfig, Protocol, TonicConfig}; use opentelemetry::trace::SpanKind; use opentelemetry::sdk::Resource; use opentelemetry::KeyValue; use opentelemetry::InstrumentationLibrary;

// Initialize reporter let reporter = OpenTelemetryReporter::new( SpanExporter::newtonic( ExportConfig { endpoint: "http://127.0.0.1:4317".tostring(), protocol: Protocol::Grpc, timeout: Duration::fromsecs(opentelemetryotlp::OTELEXPORTEROTLPTIMEOUTDEFAULT), }, TonicConfig::default(), ) .unwrap(), SpanKind::Server, Cow::Owned(Resource::new([KeyValue::new("service.name", "asynchronous")])), InstrumentationLibrary::new("example-crate", Some(env!("CARGOPKGVERSION")), None), ); minitrace::set_reporter(reporter, Config::default());

{ // Start tracing let root = Span::root("root", SpanContext::random()); }

minitrace::flush() ```