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
88 lines
2.7 KiB
Markdown
88 lines
2.7 KiB
Markdown
# 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**:
|
|
```rust
|
|
.timeout(Duration::from_secs(10))
|
|
.connect_timeout(Duration::from_secs(10))
|
|
```
|
|
- **After**:
|
|
```rust
|
|
.timeout(Duration::from_secs(self.config.http_timeout_seconds))
|
|
.connect_timeout(Duration::from_secs(self.config.http_connect_timeout_seconds))
|
|
```
|
|
- **NixOS Config**:
|
|
```nix
|
|
http_timeout_seconds = 10;
|
|
http_connect_timeout_seconds = 10;
|
|
```
|
|
|
|
## **Configuration Structure Changes**
|
|
|
|
### **SystemdConfig** (agent/src/config/mod.rs)
|
|
```rust
|
|
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)
|
|
```rust
|
|
pub struct ZmqConfig {
|
|
// ... existing fields ...
|
|
pub transmission_interval_seconds: u64, // NEW
|
|
}
|
|
```
|
|
|
|
## **NixOS Configuration Updates**
|
|
|
|
### **ZMQ Section** (hosts/common/cm-dashboard.nix)
|
|
```nix
|
|
zmq = {
|
|
# ... existing fields ...
|
|
transmission_interval_seconds = 1; # NEW
|
|
};
|
|
```
|
|
|
|
### **SystemD Section** (hosts/common/cm-dashboard.nix)
|
|
```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. |