Skip to main content

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:
  1. Load conf-default/ - Read default configuration
  2. Load conf/ - Apply user overrides
  3. Merge configurations - User settings override defaults
  4. 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

systemctl restart nmisd

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

Build docs developers (and LLMs) love