use std::time::Duration;
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct ObservabilityConfig {
pub metrics: MetricsConfig,
pub tracing: OpenTelemetryConfig,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct MetricsConfig {
pub enabled: bool,
pub path: String,
}
impl Default for MetricsConfig {
fn default() -> Self {
Self {
enabled: true,
path: "/metrics".to_string(),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct OpenTelemetryConfig {
pub exporter: TraceExporter,
pub filter: String,
pub timeout: Duration,
}
impl Default for OpenTelemetryConfig {
fn default() -> Self {
Self {
exporter: TraceExporter::Disabled,
filter: "info".to_string(),
timeout: Duration::from_secs(5),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TraceExporter {
Disabled,
Stdout,
Otlp { endpoint: String },
}