[][src]Crate opentelemetry_jaeger

OpenTelemetry Jaeger Exporter

Collects OpenTelemetry spans and reports them to a given Jaeger agent or collector endpoint. See the Jaeger Docs for details and deployment information.

Jaeger Exporter Example

This example expects a Jaeger agent running on localhost:6831.

use opentelemetry::{api::Key, global, sdk};

fn init_tracer() -> thrift::Result<()> {
    let exporter = opentelemetry_jaeger::Exporter::builder()
        .with_agent_endpoint("localhost:6831".parse().unwrap())
        .with_process(opentelemetry_jaeger::Process {
            service_name: "trace-demo".to_string(),
            tags: vec![
                Key::new("exporter").string("jaeger"),
                Key::new("float").f64(312.23),
            ],
        })
        .init()?;
    let provider = sdk::Provider::builder()
        .with_simple_exporter(exporter)
        .with_config(sdk::Config {
            default_sampler: Box::new(sdk::Sampler::AlwaysOn),
            ..Default::default()
        })
        .build();
    global::set_provider(provider);

    Ok(())
}

fn main() -> thrift::Result<()> {
    init_tracer()?;
    // Use configured tracer
    Ok(())
}

Jaeger Collector Example

If you want to skip the agent and submit spans directly to a Jaeger collector, you can enable the optional collector_client feature for this crate. This example expects a Jaeger collector running on http://localhost:14268.

[dependencies]
opentelemetry-jaeger = { version = "0.1", features = ["collector_client"] }

Then you can use the with_collector_endpoint method to specify the endpoint:

This example is not tested
// Note that this requires the `collector_client` feature.

use opentelemetry::{api::Key, global, sdk};

fn init_tracer() -> thrift::Result<()> {
    let exporter = opentelemetry_jaeger::Exporter::builder()
        .with_collector_endpoint("http://localhost:14268/api/traces".to_string())
        .with_process(opentelemetry_jaeger::Process {
            service_name: "trace-demo".to_string(),
            tags: vec![
                Key::new("exporter").string("jaeger"),
                Key::new("float").f64(312.23),
            ],
        })
        .init()?;
    let provider = sdk::Provider::builder()
        .with_simple_exporter(exporter)
        .with_config(sdk::Config {
            default_sampler: Box::new(sdk::Sampler::AlwaysOn),
            ..Default::default()
        })
        .build();
    global::set_provider(provider);

    Ok(())
}

fn main() -> thrift::Result<()> {
    init_tracer()?;
    // Use configured tracer
    Ok(())
}

Structs

Builder

Jaeger exporter builder

Exporter

Jaeger span exporter

Process

Jaeger process configuration