synd_o11y/
lib.rs

1//! syndicationd observability crate providing features
2//! related to tracing, opentelemetry, and other observability
3//! functionalities.
4#![warn(rustdoc::broken_intra_doc_links)]
5
6use ::opentelemetry::KeyValue;
7
8pub mod health_check;
9pub mod opentelemetry;
10pub mod tracing_subscriber;
11
12pub use opentelemetry::OpenTelemetryGuard;
13pub use tracing_subscriber::opentelemetry_layer;
14
15/// Request id key for opentelemetry baggage
16pub const REQUEST_ID_KEY: &str = "request.id";
17
18/// Generate random request id
19pub fn request_id() -> String {
20    // https://stackoverflow.com/questions/54275459/how-do-i-create-a-random-string-by-sampling-from-alphanumeric-characters
21    use rand::distributions::{Alphanumeric, DistString};
22    Alphanumeric.sample_string(&mut rand::thread_rng(), 10)
23}
24
25/// Generate random request id key value
26pub fn request_id_key_value() -> KeyValue {
27    KeyValue::new(REQUEST_ID_KEY, request_id())
28}