Skip to main content

fraiseql_cli/config/toml_schema/
observability.rs

1//! Observability configuration for TOML schema.
2
3use serde::{Deserialize, Serialize};
4
5/// Observability configuration
6#[derive(Debug, Clone, Deserialize, Serialize)]
7#[serde(default, deny_unknown_fields)]
8pub struct ObservabilityConfig {
9    /// Enable Prometheus metrics
10    pub prometheus_enabled:            bool,
11    /// Port for Prometheus metrics endpoint
12    pub prometheus_port:               u16,
13    /// Enable OpenTelemetry tracing
14    pub otel_enabled:                  bool,
15    /// OpenTelemetry exporter type
16    pub otel_exporter:                 String,
17    /// Jaeger endpoint for trace collection
18    pub otel_jaeger_endpoint:          Option<String>,
19    /// Enable health check endpoint
20    pub health_check_enabled:          bool,
21    /// Health check interval in seconds
22    pub health_check_interval_seconds: u32,
23    /// Log level threshold
24    pub log_level:                     String,
25    /// Log output format (json, text)
26    pub log_format:                    String,
27}
28
29impl Default for ObservabilityConfig {
30    fn default() -> Self {
31        Self {
32            prometheus_enabled:            false,
33            prometheus_port:               9090,
34            otel_enabled:                  false,
35            otel_exporter:                 "jaeger".to_string(),
36            otel_jaeger_endpoint:          None,
37            health_check_enabled:          true,
38            health_check_interval_seconds: 30,
39            log_level:                     "info".to_string(),
40            log_format:                    "json".to_string(),
41        }
42    }
43}