Move SMART configuration into disk config

- Consolidate SMART thresholds into DiskConfig structure
- Remove separate SmartConfig - disk collector handles all drive data
- Update NixOS configuration to use disk.temperature_* settings
- Remove hardcoded temperature thresholds in disk collector
- Logical grouping: disk collector owns all disk/drive configuration
This commit is contained in:
Christoffer Martinsson 2025-10-25 22:29:26 +02:00
parent c8e26b9bac
commit 0c544753f9
2 changed files with 8 additions and 14 deletions

View File

@ -41,11 +41,11 @@ pub struct DiskCollector {
impl DiskCollector { impl DiskCollector {
pub fn new(config: DiskConfig) -> Self { pub fn new(config: DiskConfig) -> Self {
// Create hysteresis thresholds for disk temperature // Create hysteresis thresholds for disk temperature from config
let temperature_thresholds = HysteresisThresholds::with_custom_gaps( let temperature_thresholds = HysteresisThresholds::with_custom_gaps(
60.0, // warning at 60°C config.temperature_warning_celsius,
5.0, // 5°C gap for recovery 5.0, // 5°C gap for recovery
70.0, // critical at 70°C config.temperature_critical_celsius,
5.0, // 5°C gap for recovery 5.0, // 5°C gap for recovery
); );

View File

@ -36,7 +36,6 @@ pub struct CollectorConfig {
pub memory: MemoryConfig, pub memory: MemoryConfig,
pub disk: DiskConfig, pub disk: DiskConfig,
pub systemd: SystemdConfig, pub systemd: SystemdConfig,
pub smart: SmartConfig,
pub backup: BackupConfig, pub backup: BackupConfig,
pub network: NetworkConfig, pub network: NetworkConfig,
pub nixos: NixOSConfig, pub nixos: NixOSConfig,
@ -75,6 +74,11 @@ pub struct DiskConfig {
pub usage_critical_percent: f32, pub usage_critical_percent: f32,
/// Filesystem configurations /// Filesystem configurations
pub filesystems: Vec<FilesystemConfig>, pub filesystems: Vec<FilesystemConfig>,
/// SMART monitoring thresholds
pub temperature_warning_celsius: f32,
pub temperature_critical_celsius: f32,
pub wear_warning_percent: f32,
pub wear_critical_percent: f32,
} }
/// Filesystem configuration entry /// Filesystem configuration entry
@ -102,16 +106,6 @@ pub struct SystemdConfig {
pub host_user_mapping: String, pub host_user_mapping: String,
} }
/// SMART collector configuration
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SmartConfig {
pub enabled: bool,
pub interval_seconds: u64,
pub temperature_warning_celsius: f32,
pub temperature_critical_celsius: f32,
pub wear_warning_percent: f32,
pub wear_critical_percent: f32,
}
/// NixOS collector configuration /// NixOS collector configuration
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]