ramosbugs / opentelemetry-honeycomb-rs

Unofficial Rust crate implementing an OpenTelemetry Exporter for Honeycomb

Home Page:https://crates.io/crates/opentelemetry-honeycomb

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OpenTelemetry Exporter for Honeycomb (Unofficial)

github crates.io docs.rs build status

Documentation

Getting Started

use std::sync::Arc;

use async_executors::TokioTpBuilder;
use opentelemetry::trace::Tracer;
use opentelemetry::global::shutdown_tracer_provider;
use opentelemetry_honeycomb::HoneycombApiKey;

fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync + 'static>> {
  let mut builder = TokioTpBuilder::new();
  builder
      .tokio_builder()
      .enable_time()
      .enable_io();
  let executor = Arc::new(builder.build().expect("Failed to build Tokio executor"));

    // Create a new instrumentation pipeline.
    let (_flusher, tracer) = opentelemetry_honeycomb::new_pipeline(
        HoneycombApiKey::new(
            std::env::var("HONEYCOMB_API_KEY")
                .expect("Missing or invalid environment variable HONEYCOMB_API_KEY")
        ),
        std::env::var("HONEYCOMB_DATASET")
            .expect("Missing or invalid environment variable HONEYCOMB_DATASET"),
        executor.clone(),
        move |fut| executor.block_on(fut),
    )
    .install()?;

    tracer.in_span("doing_work", |cx| {
        // Traced app logic here...
    });

    shutdown_tracer_provider();
    Ok(())
}

About

Unofficial Rust crate implementing an OpenTelemetry Exporter for Honeycomb

https://crates.io/crates/opentelemetry-honeycomb

License:MIT License


Languages

Language:Rust 100.0%