#open-telemetry #tracing #jaeger #spans #datadog

minitrace-opentelemetry

Opentelemetry reporter for minitrace-rust

8 releases

new 0.6.5 May 12, 2024
0.6.4 Feb 8, 2024
0.6.3 Jan 26, 2024
0.6.2 Nov 2, 2023
0.5.0 Jul 28, 2023

#395 in Debugging

Download history 3044/week @ 2024-01-22 2870/week @ 2024-01-29 1625/week @ 2024-02-05 516/week @ 2024-02-12 1896/week @ 2024-02-19 2893/week @ 2024-02-26 2293/week @ 2024-03-04 2095/week @ 2024-03-11 2921/week @ 2024-03-18 2517/week @ 2024-03-25 1919/week @ 2024-04-01 2762/week @ 2024-04-08 2487/week @ 2024-04-15 2228/week @ 2024-04-22 2244/week @ 2024-04-29 3690/week @ 2024-05-06

10,674 downloads per month

Apache-2.0

180KB
3.5K SLoC

minitrace-opentelemetry

Documentation Crates.io LICENSE

OpenTelemetry reporter for minitrace.

Dependencies

[dependencies]
minitrace = "0.6"
minitrace-opentelemetry = "0.6"

Setup OpenTelemetry Collector

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

use std::borrow::Cow;
use std::time::Duration;
use minitrace::collector::Config;
use minitrace::prelude::*;
use minitrace_opentelemetry::OpenTelemetryReporter;
use opentelemetry_otlp::{SpanExporter, ExportConfig, Protocol, TonicConfig};
use opentelemetry::trace::SpanKind;
use opentelemetry_sdk::Resource;
use opentelemetry::KeyValue;
use opentelemetry::InstrumentationLibrary;
use opentelemetry_otlp::WithExportConfig;

// Initialize reporter
let reporter = OpenTelemetryReporter::new(
    opentelemetry_otlp::new_exporter()
        .tonic()
        .with_endpoint("http://127.0.0.1:4317".to_string())
        .with_protocol(opentelemetry_otlp::Protocol::Grpc)
        .with_timeout(Duration::from_secs(
            opentelemetry_otlp::OTEL_EXPORTER_OTLP_TIMEOUT_DEFAULT,
        ))
        .build_span_exporter()
        .expect("initialize oltp exporter"),
    SpanKind::Server,
    Cow::Owned(Resource::new([KeyValue::new("service.name", "asynchronous")])),
    InstrumentationLibrary::new("example-crate", Some(env!("CARGO_PKG_VERSION")), None::<&'static str>, None),
);
minitrace::set_reporter(reporter, Config::default());

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

minitrace::flush()

Dependencies

~3–9.5MB
~79K SLoC