cm-dashboard/hardcoded_values_removed.md
Christoffer Martinsson 627c533724
All checks were successful
Build and Release / build-and-release (push) Successful in 2m7s
Update to v0.1.18 with per-collector intervals and tmux check
- Implement per-collector interval timing respecting NixOS config
- Remove all hardcoded timeout/interval values and make configurable
- Add tmux session requirement check for TUI mode (bypassed for headless)
- Update agent to send config hash in Build field instead of nixos version
- Add nginx check interval, HTTP timeouts, and ZMQ transmission interval configs
- Update NixOS configuration with new configurable values

Breaking changes:
- Build field now shows nix store config hash (8 chars) instead of nixos version
- All intervals now follow individual collector configuration instead of global

New configuration fields:
- systemd.nginx_check_interval_seconds
- systemd.http_timeout_seconds
- systemd.http_connect_timeout_seconds
- zmq.transmission_interval_seconds
2025-10-28 10:08:25 +01:00

2.7 KiB

Hardcoded Values Removed - Configuration Summary

All Hardcoded Values Converted to Configuration

1. SystemD Nginx Check Interval

  • Before: nginx_check_interval_seconds: 30 (hardcoded)
  • After: nginx_check_interval_seconds: config.nginx_check_interval_seconds
  • NixOS Config: nginx_check_interval_seconds = 30;

2. ZMQ Transmission Interval

  • Before: Duration::from_secs(1) (hardcoded)
  • After: Duration::from_secs(self.config.zmq.transmission_interval_seconds)
  • NixOS Config: transmission_interval_seconds = 1;

3. HTTP Timeouts in SystemD Collector

  • Before:
    .timeout(Duration::from_secs(10))
    .connect_timeout(Duration::from_secs(10))
    
  • After:
    .timeout(Duration::from_secs(self.config.http_timeout_seconds))
    .connect_timeout(Duration::from_secs(self.config.http_connect_timeout_seconds))
    
  • NixOS Config:
    http_timeout_seconds = 10;
    http_connect_timeout_seconds = 10;
    

Configuration Structure Changes

SystemdConfig (agent/src/config/mod.rs)

pub struct SystemdConfig {
    // ... existing fields ...
    pub nginx_check_interval_seconds: u64,      // NEW
    pub http_timeout_seconds: u64,              // NEW
    pub http_connect_timeout_seconds: u64,      // NEW
}

ZmqConfig (agent/src/config/mod.rs)

pub struct ZmqConfig {
    // ... existing fields ...
    pub transmission_interval_seconds: u64,     // NEW
}

NixOS Configuration Updates

ZMQ Section (hosts/common/cm-dashboard.nix)

zmq = {
  # ... existing fields ...
  transmission_interval_seconds = 1;           # NEW
};

SystemD Section (hosts/common/cm-dashboard.nix)

systemd = {
  # ... existing fields ...
  nginx_check_interval_seconds = 30;           # NEW  
  http_timeout_seconds = 10;                   # NEW
  http_connect_timeout_seconds = 10;           # NEW
};

Benefits

No hardcoded values - All timing/timeout values configurable
Consistent configuration - Everything follows NixOS config pattern
Environment-specific tuning - Can adjust timeouts per deployment
Maintainability - No magic numbers scattered in code
Testing flexibility - Can configure different values for testing

Runtime Behavior

All previously hardcoded values now respect configuration:

  • Nginx latency checks: Every 30s (configurable)
  • ZMQ transmission: Every 1s (configurable)
  • HTTP requests: 10s timeout (configurable)
  • HTTP connections: 10s timeout (configurable)

The codebase is now 100% configuration-driven with no hardcoded timing values.