Configuration System
NMIS uses a hierarchical configuration system with file-based storage, primarily using Perl hash structures serialized to .nmis files. The configuration system controls all aspects of NMIS behavior including database connections, authentication, monitoring policies, and system operations.
Configuration File Locations
NMIS maintains two primary configuration directories:
conf-default/
The conf-default/ directory contains:
- Default configuration templates - Shipped with NMIS installation
- Reference implementations - Best practice examples
- Protected from upgrades - Not modified during normal operation
- Base directory:
/usr/local/nmis9/conf-default/
Key files in conf-default:
Config.nmis - Main system configuration
Access.nmis - Access control and permissions
Users.nmis - User account definitions
Locations.nmis - Site/location definitions
Contacts.nmis - Contact information for escalations
Model-*.nmis - Device model definitions
conf/
The conf/ directory contains:
- Active configuration - Runtime settings used by NMIS
- User customizations - Site-specific overrides
- Preserved during upgrades - User changes maintained
- Base directory:
/usr/local/nmis9/conf/
Never edit files in conf-default/ directly. Always copy configuration files to conf/ for customization.
Configuration Precedence
NMIS follows this loading order:
- Load conf-default/ - Read default configuration
- Load conf/ - Apply user overrides
- Merge configurations - User settings override defaults
- Runtime application - Merged config used by NMIS
# Example from Config.nmis structure
'database' => {
'db_name' => 'nmisng',
'db_server' => 'localhost',
'db_port' => '27017',
'db_username' => 'opUserRW',
'db_password' => 'op42flow42'
}
Main Configuration File
Config.nmis is the primary configuration file containing:
Database Configuration
'database' => {
'db_name' => 'nmisng',
'db_server' => 'localhost',
'db_port' => '27017',
'db_query_timeout' => 5000,
'db_username' => 'opUserRW',
'db_password' => 'op42flow42'
}
Directory Structure
'directories' => {
'<nmis_base>' => '/usr/local/nmis9',
'<nmis_conf>' => '<nmis_base>/conf',
'<nmis_conf_default>' => '<nmis_base>/conf-default',
'<nmis_logs>' => '<nmis_base>/logs',
'<nmis_models>' => '<nmis_base>/models-custom',
'<nmis_default_models>' => '<nmis_base>/models-default'
}
System Settings
'system' => {
'nmis_host' => 'localhost',
'server_name' => 'localhost',
'server_admin' => 'root@localhost',
'polling_interval_factor' => 0.95,
'snmp_timeout' => 5,
'snmp_retries' => 1
}
Logging Configuration
'logging' => {
'log_level' => 'info' # info, debug, warn, error, fatal, or 1-9
}
Log files location: ~/workspace/source/conf-default/Config.nmis:42
Authentication Configuration
Authentication settings control user access:
'authentication' => {
'auth_method_1' => 'htpasswd',
'auth_htpasswd_file' => '<nmis_conf>/users.dat',
'auth_expire' => '+30min',
'auth_web_key' => 'Please Change Me!',
'auth_cookie_flavour' => 'omk' # 'nmis' or 'omk'
}
Security: Always change auth_web_key to a random string for production systems. This key is used for cookie signing.
Email Configuration
'email' => {
'mail_server' => '127.0.0.1',
'mail_server_port' => '25',
'mail_from' => '[email protected]',
'mail_domain' => 'yourdomain.com',
'mail_use_tls' => 'false'
}
Scheduler Configuration
'schedule' => {
'schedule_configbackup' => 86400, # Daily
'schedule_dbcleanup' => 86400, # Daily
'schedule_escalations' => 90, # 90 seconds
'schedule_metrics' => 120, # 2 minutes
'schedule_purge' => 3600, # Hourly
'schedule_selftest' => 900 # 15 minutes
}
Data Expiration
'expiration' => {
'purge_event_after' => 604800, # 7 days
'purge_inventory_after' => 1209600, # 14 days
'purge_backup_after' => 2592000, # 30 days
'purge_rrd_after' => 2592000 # 30 days
}
Customization Best Practices
1. Create Override File
cd /usr/local/nmis9/conf
cp ../conf-default/Config.nmis ./Config.nmis
2. Edit Only Required Settings
Modify only the specific values you need to change. The rest will inherit from defaults.
3. Validate Configuration
perl /usr/local/nmis9/admin/config_check.pl
4. Reload Configuration
Configuration Variables
NMIS uses placeholder variables that are expanded at runtime:
<nmis_base> - Base installation directory
<nmis_conf> - Configuration directory
<nmis_logs> - Log file directory
<nmis_var> - Variable data directory
<url_base> - Web URL base path
Example: <nmis_base>/logs expands to /usr/local/nmis9/logs