rs_zero/observability/
config.rs1use std::time::Duration;
2
3#[derive(Debug, Clone, PartialEq, Eq, Default)]
5pub struct ObservabilityConfig {
6 pub metrics: MetricsConfig,
8 pub tracing: OpenTelemetryConfig,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq)]
14pub struct MetricsConfig {
15 pub enabled: bool,
17 pub path: String,
19}
20
21impl Default for MetricsConfig {
22 fn default() -> Self {
23 Self {
24 enabled: true,
25 path: "/metrics".to_string(),
26 }
27 }
28}
29
30#[derive(Debug, Clone, PartialEq, Eq)]
32pub struct OpenTelemetryConfig {
33 pub exporter: TraceExporter,
35 pub filter: String,
37 pub timeout: Duration,
39}
40
41impl Default for OpenTelemetryConfig {
42 fn default() -> Self {
43 Self {
44 exporter: TraceExporter::Disabled,
45 filter: "info".to_string(),
46 timeout: Duration::from_secs(5),
47 }
48 }
49}
50
51#[derive(Debug, Clone, PartialEq, Eq)]
53pub enum TraceExporter {
54 Disabled,
56 Stdout,
58 Otlp { endpoint: String },
61}