Skip to main content

Operating System

NMIS 9 supports the following Linux distributions:

Supported Distributions

RedHat/CentOS

  • RHEL 7, 8, 9
  • CentOS 7, 8
  • Rocky Linux 8, 9

Debian/Ubuntu

  • Debian 9 (Stretch), 10 (Buster), 11 (Bullseye), 12 (Bookworm)
  • Ubuntu 16.04 (Xenial), 18.04 (Bionic), 20.04 (Focal), 22.04 (Jammy), 23.04 (Lunar)
The installer automatically detects your OS and installs appropriate dependencies.

Software Dependencies

Core Requirements

Perl
  • Version: 5.10.1 or higher (5.32.1 recommended)
  • Required for all NMIS components
MongoDB
  • Version: 6.0 or 7.0
  • Used for node configuration, events, and inventory data
  • WiredTiger storage engine
RRDtool
  • Version: 1.4 or higher
  • Used for performance data storage and graphing

Perl Modules

The installer automatically installs required CPAN modules:

Critical Modules

# Core framework
Mojolicious >= 8.11
MongoDB >= 2.2.0

# Database
Config::AutoConf >= 0.3
Path::Tiny
DateTime::Locale

# Networking
IO::Socket::IP
Socket >= 1.97
Net::SNMP
Net::DNS

# Security
IO::Socket::SSL
Crypt::PasswdMD5
Crypt::Rijndael
Digest::SHA

# Data Processing
JSON::XS
JSON::PP
Time::Local >= 1.2
Excel::Writer::XLSX

Optional Modules

For extended authentication methods:
Net::LDAP        # LDAP authentication
Net::LDAPS       # LDAP over SSL
Crypt::UnixCrypt # Unix password hashing
Authen::TacacsPlus     # TACACS+ auth
Authen::Simple::RADIUS # RADIUS auth
The installer uses cpanm to install modules. If installation fails, modules can be installed manually:
cpan Module::Name

Hardware Requirements

Hardware needs scale based on the number of monitored devices:

Small Deployment (1-100 devices)

ComponentSpecification
CPU2 cores, 2.0 GHz
RAM4 GB
Disk50 GB
Network100 Mbps

Medium Deployment (100-500 devices)

ComponentSpecification
CPU4 cores, 2.5 GHz
RAM8 GB
Disk200 GB (SSD recommended)
Network1 Gbps

Large Deployment (500-2000 devices)

ComponentSpecification
CPU8 cores, 3.0 GHz
RAM16 GB
Disk500 GB SSD
Network1 Gbps

Enterprise Deployment (2000+ devices)

ComponentSpecification
CPU16+ cores, 3.0+ GHz
RAM32+ GB
Disk1 TB+ SSD (NVMe preferred)
Network10 Gbps
These are minimum requirements. Actual needs depend on:
  • Polling interval (default: 5 minutes)
  • Number of interfaces per device
  • Data retention period
  • Number of concurrent web users

Disk Space Planning

RRD Storage

Each interface generates approximately 150 KB of RRD data. Example calculation for 500 devices with average 24 interfaces:
500 devices × 24 interfaces × 150 KB = 1.8 GB
Add 50% buffer for system metrics (CPU, memory, etc.):
1.8 GB × 1.5 = 2.7 GB for RRD data

MongoDB Database

Database size depends on:
  • Number of nodes: ~50 KB per node
  • Inventory items: ~10 KB per interface
  • Events: ~2 KB per event
Example for 500 devices:
Nodes:     500 × 50 KB = 25 MB
Inventory: 500 × 24 × 10 KB = 120 MB
Events:    10,000 × 2 KB = 20 MB
Total:     ~165 MB + indexes (~50 MB) = 215 MB

Log Files

Log rotation is enabled by default:
  • Application logs: 100 MB max
  • Web server logs: 100 MB max
  • Rotated logs kept for 30 days

Network Requirements

Firewall Rules

Inbound (NMIS Server)

PortProtocolPurposeRequired
8080TCPNMIS web interfaceYes
161UDPSNMP trap receiverOptional
162UDPSNMP trap receiverOptional
2055UDPNetFlow collectorOptional
514UDPSyslog receiverOptional

Outbound (NMIS Server)

PortProtocolPurposeRequired
161UDPSNMP pollingYes
22TCPSSH (for device config backup)Optional
443TCPHTTPS (for cloud APIs)Optional
25/587TCPSMTP (for email alerts)Optional

Bandwidth Requirements

SNMP polling bandwidth per device:
  • Average: 5-10 Kbps
  • Peak (during discovery): 50-100 Kbps
For 500 devices with 5-minute polling:
500 devices × 10 Kbps / 300 seconds = ~17 Kbps average
Peak during poll cycle: 500 devices × 10 Kbps = 5 Mbps
Bandwidth needs are minimal. Network latency is more important than throughput.

Latency Considerations

  • LAN devices: < 1 ms ideal
  • WAN devices: < 100 ms acceptable
  • Internet devices: < 500 ms maximum
High latency increases SNMP timeouts and polling duration.

Performance Tuning

MongoDB

Allocate 50% of system RAM to MongoDB:
# /etc/mongod.conf
storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 8  # For 16 GB system

RRD Updates

For systems with many devices, enable RRD caching:
# Start rrdcached
rrdcached -l unix:/var/run/rrdcached.sock -w 1800 -z 1800

Perl Performance

Use threaded Perl for better concurrency:
perl -V:usethreads  # Should show 'define'

Virtual Machine Recommendations

VMware

  • Use paravirtualized SCSI controller (VMware Paravirtual)
  • Enable memory reservation (100% of allocated RAM)
  • Use thick-provisioned disks for database
  • Disable memory ballooning for database VM

KVM/QEMU

  • Use virtio drivers for disk and network
  • Enable CPU pinning for large deployments
  • Use host-passthrough CPU mode

Hyper-V

  • Use Generation 2 VMs
  • Enable Dynamic Memory with minimum = maximum
  • Use fixed-size VHD for database

Docker Requirements

For containerized deployment: Docker Engine
  • Version: 20.10 or higher
  • Storage driver: overlay2
Docker Compose
  • Version: 2.0 or higher
Host Resources
  • Same CPU/RAM requirements as bare metal
  • Add 2 GB overhead for containers

Browser Requirements

For accessing the web interface:
  • Chrome 90+
  • Firefox 88+
  • Safari 14+
  • Edge 90+
JavaScript must be enabled.
Internet Explorer is not supported.

Security Requirements

User Accounts

NMIS runs as the nmis user:
uid=10001(nmis) gid=10001(nmis)
The installer creates this account automatically.

File Permissions

Critical directories:
/usr/local/nmis9/conf     # 0750, nmis:nmis
/usr/local/nmis9/var      # 0755, nmis:nmis
/usr/local/nmis9/database # 0750, nmis:nmis

SELinux

If SELinux is enabled, the installer sets appropriate contexts:
semanage fcontext -a -t httpd_sys_content_t "/usr/local/nmis9/htdocs(/.*)?"
restorecon -R /usr/local/nmis9

Monitoring NMIS Itself

System Metrics

Monitor these metrics on the NMIS server:
  • CPU usage: Should be < 70% average
  • Memory usage: MongoDB should use ~50% of RAM
  • Disk I/O: Watch for RRD write bottlenecks
  • Network: Monitor SNMP polling latency

NMIS Health Check

/usr/local/nmis9/bin/nmis-cli act=status
Expected output:
nmisd: running (pid 1234)
Polling: active
Last poll: 2 minutes ago
Database: connected

Upgrade Paths

From NMIS 8

Migration requires:
  • MongoDB 4.x or higher
  • Perl 5.10.1 or higher
  • Migration tools provided
See NMIS 8 Migration Guide for details.

From NMIS 9.x to 9.y

In-place upgrade supported:
sudo ./nmis9-installer.run
Backup before upgrading.

See Also

Build docs developers (and LLMs) love