logo
Expand description

Primitives for sending name-value data across system boundaries.

Main types in this module are:

  • Baggage: Baggage is used to annotate telemetry, adding context and information to metrics, traces, and logs.
  • BaggageExt: Extensions for managing Baggage in a Context.

Baggage can be sent between systems using the BaggagePropagator in accordance with the W3C Baggage specification.

Examples

use opentelemetry::{baggage::BaggageExt, Key, propagation::TextMapPropagator};
use opentelemetry::sdk::propagation::BaggagePropagator;
use std::collections::HashMap;

// Example baggage value passed in externally via http headers
let mut headers = HashMap::new();
headers.insert("baggage".to_string(), "user_id=1".to_string());

let propagator = BaggagePropagator::new();
// can extract from any type that impls `Extractor`, usually an HTTP header map
let cx = propagator.extract(&headers);

// Iterate over extracted name-value pairs
for (name, value) in cx.baggage() {
    // ...
}

// Add new baggage
let cx_with_additions = cx.with_baggage(vec![Key::new("server_id").i64(42)]);

// Inject baggage into http request
propagator.inject_context(&cx_with_additions, &mut headers);

let header_value = headers.get("baggage").expect("header is injected");
assert!(header_value.contains("user_id=1"), "still contains previous name-value");
assert!(header_value.contains("server_id=42"), "contains new name-value pair");

Structs

A set of name-value pairs describing user-defined properties.

An optional property set that can be added to Baggage values.

An iterator over the entries of a Baggage.

Baggage name-value pairs with their associated metadata.

Traits

Methods for sorting and retrieving baggage data in a context.