Skip to main content

Node Overview

Nodes are the network devices, servers, and equipment monitored by NMIS. Each node has configuration properties that control discovery, polling, and data collection behavior.

Node Properties

Key node configuration properties include:

Basic Properties

  • name - Unique node identifier
  • host - IP address or hostname
  • group - Logical grouping (network, servers, etc.)
  • location - Physical location reference
  • businessService - Business service association
  • customer - Customer or department
  • active - Enable/disable monitoring
  • collect - Enable/disable data collection

Node Types and Roles

'system' => {
  'nodetype_list' => 'default,generic,switch,router,firewall,server',
  'roletype_list' => 'default,core,distribution,access',
  'nettype_list' => 'default,wan,lan,vpn,man,san,voice'
}
Node type determines:
  • Which model files are applied
  • What data is collected
  • How the device is monitored
Role type affects:
  • Event severity mapping
  • Threshold levels
  • Escalation policies

SNMP Configuration

SNMPv1/v2c Settings

'configuration' => {
  'host' => '192.168.1.1',
  'version' => 'snmpv2c',
  'community' => 'public',
  'port' => 161,
  'max_repetitions' => 0,  # Bulk operations
  'timeout' => 5,          # Seconds
  'retries' => 1
}

SNMPv3 Settings

'configuration' => {
  'host' => '192.168.1.1',
  'version' => 'snmpv3',
  'username' => 'nmisuser',
  'authprotocol' => 'sha',
  'authkey' => 'authpassword',
  'privprotocol' => 'aes',
  'privkey' => 'privpassword',
  'context' => ''
}

Default SNMP Settings

From Config.nmis:97:
'system' => {
  'default_communityRO' => 'public',
  'default_username' => '',
  'default_authkey' => '',
  'default_authpassword' => '',
  'default_privkey' => '',
  'default_privpassword' => '',
  'snmp_timeout' => 5,
  'snmp_retries' => 1,
  'snmp_max_msg_size' => 1472
}
Always use SNMPv3 with authentication and privacy for production environments. SNMPv1/v2c community strings are transmitted in clear text.

WMI Configuration

For Windows systems using WMI:
'configuration' => {
  'host' => '192.168.1.10',
  'wmiuser' => 'domain\\username',
  'wmipassword' => 'password'
}

Node Groups

Groups organize nodes for:
  • Access control
  • Bulk operations
  • Report generation
  • Dashboard views

Default Groups

Common group names:
  • network - Network infrastructure
  • servers - Server systems
  • DataCenter - Data center equipment
  • Campus - Campus network
  • Branches - Branch offices

Group-Based Access

From Users.nmis:39:
'dc_ops' => {
  'user' => 'dc_ops',
  'groups' => 'network,DataCenter,Sales',
  'privilege' => 'operator'
}

Node Import from CSV

Use node_admin.pl to bulk import nodes from CSV:

CSV Format

name,host,group,community,location,active,collect
router1,192.168.1.1,network,public,DataCenter,true,true
switch1,192.168.1.2,network,public,DataCenter,true,true
server1,192.168.1.10,servers,,HeadOffice,true,true

Import Command

From node_admin.pl:288:
/usr/local/nmis9/admin/node_admin.pl \
  act=import_bulk \
  nodes=/path/to/nodes.csv

Import JSON Format

[
  {
    "name": "router1",
    "configuration": {
      "host": "192.168.1.1",
      "group": "network",
      "community": "public",
      "location": "DataCenter",
      "active": true,
      "collect": true
    }
  }
]
Import JSON file:
/usr/local/nmis9/admin/node_admin.pl \
  act=import \
  file=/path/to/nodes.json

Node Operations

Create Node

/usr/local/nmis9/admin/node_admin.pl \
  act=create \
  file=newnode.json

Update Node

From node_admin.pl:966:
/usr/local/nmis9/admin/node_admin.pl \
  act=set \
  node=router1 \
  entry.configuration.community=private \
  entry.configuration.collect=true

List Nodes

# List all nodes
/usr/local/nmis9/admin/node_admin.pl act=list

# List nodes in group
/usr/local/nmis9/admin/node_admin.pl \
  act=list \
  group=network

# List with UUIDs
/usr/local/nmis9/admin/node_admin.pl \
  act=list_uuid

Show Node Details

/usr/local/nmis9/admin/node_admin.pl \
  act=show \
  node=router1

Export Node

/usr/local/nmis9/admin/node_admin.pl \
  act=export \
  node=router1 \
  file=router1.json

Delete Node

/usr/local/nmis9/admin/node_admin.pl \
  act=delete \
  node=router1 \
  confirm=YES
Node deletion is permanent. Use confirm=YES (uppercase) to prevent accidental deletion.

Node Validation

Name Validation

From Config.nmis:72:
'globals' => {
  'node_name_rule' => qr/^[a-zA-Z0-9_. -]+$/  # No '/' allowed
}
Valid node names:
  • router-1
  • switch.building.1
  • Server_01
Invalid node names:
  • router/1 - Contains /
  • switch#1 - Contains #

Node Status

Status Fields

  • nodestatus - Overall health (up, down, degraded)
  • ping - Reachability status
  • snmp - SNMP collection status
  • wmi - WMI collection status
  • last_poll - Last poll timestamp
  • last_update - Last update timestamp

Demote Faulty Nodes

From Config.nmis:105:
'system' => {
  'demote_faulty_nodes' => 'true'  # Poll unreachable nodes once daily
}

Node Polling Control

Polling Policy

Nodes can have assigned polling policies that control:
  • Poll frequency
  • Collection items
  • Threshold settings
Reference: Model-Policy.nmis:44

Manual Polling

# Force update
/usr/local/nmis9/bin/nmis-cli act=update node=router1

# Force collect
/usr/local/nmis9/bin/nmis-cli act=collect node=router1

Node Backup

From node_admin.pl:837:

Dump Node Data

/usr/local/nmis9/admin/node_admin.pl \
  act=dump \
  node=router1 \
  file=/tmp/router1-backup.json

Restore Node Data

/usr/local/nmis9/admin/node_admin.pl \
  act=restore \
  file=/tmp/router1-backup.json

Advanced Configuration

Node Overrides

Node-specific overrides for model behavior:
'overrides' => {
  'ifDescr' => 'GigabitEthernet0/0',
  'collect' => 'false'  # Don't collect this interface
}

Node Aliases

Alternate names for a node:
'aliases' => [
  'router1.example.com',
  'core-router-1'
]

IP Addresses

'addresses' => [
  '192.168.1.1',
  '10.0.0.1',
  '172.16.0.1'
]

Build docs developers (and LLMs) love