Configuration
BAMON uses YAML configuration files to define monitoring behavior, script settings, and system parameters.
Configuration File Location
- User installation:
~/.config/bamon/config.yaml
- System installation:
/etc/bamon/config.yaml
- Custom location: Use
--config
option or BAMON_CONFIG_FILE
environment variable
Configuration Structure
daemon:
default_interval: 60
log_file: "~/.local/share/bamon/logs/bamon.log"
pid_file: "~/.local/share/bamon/bamon.pid"
sandbox:
timeout: 30
max_cpu_time: 60
max_file_size: 10240
max_virtual_memory: 102400
performance:
enable_monitoring: true
load_threshold: 0.8
optimize_scheduling: true
scripts:
- name: "script_name"
command: "bash_command_to_execute"
interval: 60
enabled: true
description: "Script description"
Daemon Configuration
Basic Settings
Setting |
Default |
Description |
default_interval |
60 |
Default execution interval in seconds |
log_file |
~/.local/share/bamon/logs/bamon.log |
Log file path |
pid_file |
~/.local/share/bamon/bamon.pid |
PID file path |
Example
daemon:
default_interval: 120
log_file: "/var/log/bamon/bamon.log"
pid_file: "/var/run/bamon.pid"
Sandbox Configuration
Security Settings
Setting |
Default |
Description |
timeout |
30 |
Script execution timeout in seconds |
max_cpu_time |
60 |
Maximum CPU time in seconds |
max_file_size |
10240 |
Maximum file size in KB |
max_virtual_memory |
102400 |
Maximum virtual memory in KB |
Example
sandbox:
timeout: 60
max_cpu_time: 120
max_file_size: 20480
max_virtual_memory: 204800
Monitoring Settings
Setting |
Default |
Description |
enable_monitoring |
true |
Enable performance monitoring |
load_threshold |
0.8 |
System load threshold for optimization |
optimize_scheduling |
true |
Enable intelligent scheduling |
Example
performance:
enable_monitoring: true
load_threshold: 0.7
optimize_scheduling: true
Script Configuration
Script Properties
Property |
Required |
Description |
name |
Yes |
Unique script identifier |
command |
Yes |
Bash command to execute |
interval |
No |
Execution interval in seconds |
enabled |
No |
Whether script is enabled (default: true) |
description |
No |
Human-readable description |
Example
scripts:
- name: "health_check"
command: "curl -s -o /dev/null -w '%{http_code}' https://httpbin.org/status/200"
interval: 30
enabled: true
description: "HTTP health check"
- name: "disk_usage"
command: "df -h / | awk 'NR==2 {print \$5}' | sed 's/%//'"
interval: 300
enabled: true
description: "Monitor disk usage"
- name: "maintenance"
command: "systemctl restart nginx"
interval: 3600
enabled: false
description: "Hourly Nginx restart"
Environment Variables
Configuration Override
Variable |
Description |
BAMON_CONFIG_FILE |
Override default configuration file path |
BAMON_LOG_FILE |
Override default log file path |
Example
# Use custom configuration file
export BAMON_CONFIG_FILE="/path/to/custom/config.yaml"
bamon status
# Enable verbose logging
bamon start --daemon
Configuration Management
View Configuration
# Show current configuration
bamon config show
# Pretty print configuration
bamon config show --pretty
Edit Configuration
# Edit configuration file
bamon config edit
# Edit with specific editor
bamon config edit --editor nano
Validate Configuration
# Validate configuration syntax
bamon config validate
# Validate with verbose output
bamon config validate --verbose
Reset Configuration
# Reset to default values (creates backup)
bamon config reset
# Reset without confirmation
bamon config reset --force
Advanced Configuration
Custom Logging
daemon:
log_file: "/var/log/bamon/custom.log"
Resource Limits
sandbox:
timeout: 120
max_cpu_time: 300
max_file_size: 51200
max_virtual_memory: 512000
performance:
enable_monitoring: true
load_threshold: 0.6
optimize_scheduling: true
Configuration Examples
Development Environment
daemon:
default_interval: 10
log_file: "~/dev/bamon.log"
sandbox:
timeout: 60
max_cpu_time: 120
scripts:
- name: "test_script"
command: "echo 'Hello World'"
interval: 10
enabled: true
Production Environment
daemon:
default_interval: 60
log_file: "/var/log/bamon/bamon.log"
pid_file: "/var/run/bamon.pid"
sandbox:
timeout: 30
max_cpu_time: 60
max_file_size: 10240
max_virtual_memory: 102400
performance:
enable_monitoring: true
load_threshold: 0.8
optimize_scheduling: true
scripts:
- name: "api_health"
command: "curl -s https://api.example.com/health"
interval: 30
enabled: true
description: "API health check"
Troubleshooting
Configuration Validation
# Check configuration syntax
bamon config validate
# View current configuration
bamon config show
Common Issues
Invalid YAML syntax: Use a YAML validator
# Check YAML syntax
yq eval . ~/.config/bamon/config.yaml
Permission denied: Check file permissions
# Check file permissions
ls -la ~/.config/bamon/config.yaml
chmod 644 ~/.config/bamon/config.yaml
Configuration not loading: Check file location
# Verify configuration file exists
ls -la ~/.config/bamon/config.yaml