Module opentelemetry::baggage
source · 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 managingBaggage
in aContext
.
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.