All checks were successful
Build and Release / build-and-release (push) Successful in 2m7s
- 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
2.7 KiB
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.