Skip to main content

Overview

This guide covers common NMIS issues, diagnostic commands, and resolution procedures for system administrators.

Diagnostic Tools

Check System Status

# Check all NMIS daemons
/usr/local/nmis9/bin/nmis-cli act=daemon-status

# Check specific services
sudo systemctl status nmis9d
sudo systemctl status mongod

Debug Mode

Enable debug logging for detailed troubleshooting:
# Run command with debug output
/usr/local/nmis9/bin/nmis-cli act=<command> debug=9

# Node admin with debug
/usr/local/nmis9/admin/node_admin.pl act=show node=router1 debug=9

Log Files

Key log file locations:
# Main NMIS log
tail -f /usr/local/nmis9/logs/nmis.log

# CLI operations log
tail -f /usr/local/nmis9/logs/cli.log

# MongoDB log
tail -f /var/log/mongodb/mongod.log

# System logs
journalctl -u nmis9d -f
journalctl -u mongod -f

Common Issues

NMIS Daemons Not Running

Symptoms

  • No data collection occurring
  • Web interface shows “no daemons running”
  • act=daemon-status shows no processes

Diagnosis

1

Check daemon status

sudo systemctl status nmis9d
/usr/local/nmis9/bin/nmis-cli act=daemon-status
2

Check for errors in logs

tail -100 /usr/local/nmis9/logs/nmis.log
journalctl -u nmis9d -n 100
3

Check MongoDB connectivity

sudo systemctl status mongod
mongo --eval "db.serverStatus()"

Resolution

# Start MongoDB if stopped
sudo systemctl start mongod

# Start NMIS daemons
sudo systemctl start nmis9d

# Enable auto-start on boot
sudo systemctl enable nmis9d mongod

# Verify services are running
/usr/local/nmis9/bin/nmis-cli act=daemon-status

Database Connection Failures

Symptoms

  • “Cannot connect to database” errors
  • Web interface won’t load
  • CLI commands fail with database errors

Diagnosis

1

Check MongoDB status

sudo systemctl status mongod
ps aux | grep mongod
2

Test database connection

mongo --eval "db.serverStatus()"
3

Check authentication

# Get credentials from config
grep -E 'db_(username|password|server|port|name)' /usr/local/nmis9/conf/Config.nmis

# Test with credentials
mongo nmisng -u nmisng -p --authenticationDatabase nmisng
4

Check MongoDB logs

tail -100 /var/log/mongodb/mongod.log

Common Causes

MongoDB not running:
sudo systemctl start mongod
sudo systemctl enable mongod
Authentication failure:
# Re-run database setup
sudo /usr/local/nmis9/admin/setup_mongodb.pl
Connection timeout:
  • Increase timeout in Config.nmis:
'db_connection_timeout' => 10000,
'db_query_timeout' => 10000,
Firewall blocking connection:
# Allow MongoDB port
sudo firewall-cmd --permanent --add-port=27017/tcp
sudo firewall-cmd --reload

SNMP Collection Failures

Symptoms

  • Nodes show “Node Down” events
  • No data being collected from devices
  • SNMP timeout errors in logs

Diagnosis

1

Check node configuration

/usr/local/nmis9/admin/node_admin.pl act=show node=<nodename>
Verify:
  • host - correct IP/hostname
  • community - SNMP community string
  • version - SNMP version (snmpv1/snmpv2c/snmpv3)
  • port - SNMP port (default: 161)
2

Test SNMP manually

# SNMPv2c
snmpwalk -v 2c -c <community> <host> system

# SNMPv3
snmpwalk -v 3 -u <username> -l authPriv \
  -a SHA -A <authpass> -x AES -X <privpass> \
  <host> system
3

Check SNMP reachability

# Ping device
ping -c 3 <host>

# Check SNMP port
nc -zv <host> 161
4

Check NMIS logs

grep <nodename> /usr/local/nmis9/logs/nmis.log | tail -50

Resolution

Incorrect SNMP community:
/usr/local/nmis9/admin/node_admin.pl act=set node=<nodename> \
  entry.configuration.community=<correct-community>
SNMP timeout too short:
/usr/local/nmis9/admin/node_admin.pl act=set node=<nodename> \
  entry.configuration.snmpTimeout=5000
Network connectivity:
  • Check firewall rules
  • Verify device SNMP configuration
  • Check for network issues
SNMPv3 authentication:
/usr/local/nmis9/admin/node_admin.pl act=set node=<nodename> \
  entry.configuration.username=<snmpuser> \
  entry.configuration.authkey=<authpass> \
  entry.configuration.authprotocol=sha \
  entry.configuration.privkey=<privpass> \
  entry.configuration.privprotocol=aes

Polling Failures

Symptoms

  • Specific nodes not being polled
  • Irregular polling intervals
  • Jobs stuck in queue

Diagnosis

# Check scheduled jobs
/usr/local/nmis9/bin/nmis-cli act=list-schedules verbose=true

# Check for stuck jobs
/usr/local/nmis9/bin/nmis-cli act=list-schedules only=active

# Check node status
/usr/local/nmis9/admin/node_admin.pl act=show node=<nodename>

Resolution

Jobs stuck in queue:
# Abort stuck job
/usr/local/nmis9/bin/nmis-cli act=abort id=<job-id>

# Clear all stuck jobs (use with caution)
/usr/local/nmis9/bin/nmis-cli act=delete-schedule id=ALL
Node not being polled:
# Verify node is active
/usr/local/nmis9/admin/node_admin.pl act=set node=<nodename> \
  entry.configuration.collect=true \
  entry.activated.NMIS=true

# Manually schedule collection
/usr/local/nmis9/bin/nmis-cli act=schedule job.type=collect \
  job.node=<nodename>
Restart polling:
sudo systemctl restart nmis9d

Web Interface Issues

Symptoms

  • Web interface not loading
  • “403 Forbidden” errors
  • Graphs not displaying

Diagnosis

1

Check web server

# Apache
sudo systemctl status httpd
tail -f /var/log/httpd/error_log

# Nginx
sudo systemctl status nginx
tail -f /var/log/nginx/error.log
2

Check NMIS permissions

ls -la /usr/local/nmis9/htdocs/
ls -la /usr/local/nmis9/cgi-bin/
3

Check SELinux (if enabled)

sudo getenforce
sudo ausearch -m avc -ts recent

Resolution

Fix file permissions:
sudo /usr/local/nmis9/bin/nmis-cli act=fixperms
Restart web server:
# Apache
sudo systemctl restart httpd

# Nginx  
sudo systemctl restart nginx
SELinux issues:
# Allow httpd to execute NMIS scripts
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_enable_cgi 1

# Or set to permissive mode (not recommended for production)
sudo setenforce 0

Authentication Issues

Symptoms

  • Cannot login to web interface
  • “Invalid credentials” errors
  • User accounts locked

Diagnosis

# Check user sessions
/usr/local/nmis9/bin/nmis-cli act=get-sessions

# Check authentication logs
grep -i "auth" /usr/local/nmis9/logs/nmis.log | tail -50

Resolution

Unlock user account:
/usr/local/nmis9/bin/nmis-cli act=unlock-user user=<username>
Clear user sessions:
/usr/local/nmis9/bin/nmis-cli act=clean-sessions user=<username>
Reset user password: Edit /usr/local/nmis9/conf/Access.nmis or use the web interface (requires admin access).

Performance Issues

Symptoms

  • Slow web interface
  • Delayed data collection
  • High system load

Diagnosis

1

Check system resources

# CPU and memory
top -b -n 1 | head -20

# Disk usage
df -h

# Disk I/O
iostat -x 2 5
2

Check MongoDB performance

# Database size
mongo nmisng --eval "db.stats(1024*1024)"

# Current operations
mongo nmisng --eval "db.currentOp()"

# Slow queries
mongo nmisng --eval "db.system.profile.find().sort({ts:-1}).limit(5)"
3

Check NMIS performance data

/usr/local/nmis9/bin/nmis-cli act=collect-performance-data
/usr/local/nmis9/bin/nmis-cli act=collect-top-data

Resolution

Database cleanup:
# Remove old data
/usr/local/nmis9/bin/nmis-cli act=dbcleanup

# Purge old files
/usr/local/nmis9/bin/nmis-cli act=purge
Optimize database:
# Rebuild indexes
/usr/local/nmis9/bin/nmis-cli act=ensure-indexes drop_unwanted=true

# Compact collections
mongo nmisng --eval "db.events.compact()"
mongo nmisng --eval "db.opstatus.compact()"
Increase system resources:
  • Add RAM (recommended: 8GB minimum)
  • Increase disk space
  • Add CPU cores
  • Use SSD for database storage
Tune MongoDB: Edit /etc/mongod.conf:
storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2  # Adjust based on available RAM

Disk Space Issues

Symptoms

  • “No space left on device” errors
  • Database write failures
  • Log files not being written

Diagnosis

# Check disk usage
df -h

# Find large directories
du -sh /usr/local/nmis9/* | sort -h
du -sh /var/lib/mongodb/* | sort -h

# Find large files
find /usr/local/nmis9 -type f -size +100M -exec ls -lh {} \;

Resolution

1

Clean up logs

# Rotate and compress old logs
find /usr/local/nmis9/logs -name "*.log" -mtime +30 -exec gzip {} \;

# Remove very old logs
find /usr/local/nmis9/logs -name "*.log.gz" -mtime +90 -delete
2

Database cleanup

/usr/local/nmis9/bin/nmis-cli act=dbcleanup info=true
/usr/local/nmis9/bin/nmis-cli act=purge info=true
3

Remove old RRD files

# Find unused RRD files (for deleted nodes)
find /usr/local/nmis9/database -type f -name "*.rrd" -mtime +90
4

Clean temporary files

find /tmp -name "nmis*" -mtime +7 -delete
find /usr/local/nmis9/var/nmis_system -name "*.tmp" -delete

Advanced Diagnostics

Database Queries

Useful MongoDB queries for troubleshooting:
// Count nodes by group
db.nodes.aggregate([
  {$group: {_id: "$configuration.group", count: {$sum: 1}}}
])

// Find recent events
db.events.find(
  {active: true},
  {node_uuid: 1, event: 1, startdate: 1}
).sort({startdate: -1}).limit(20)

// Check queue backlog
db.queue.find(
  {in_progress: 0},
  {type: 1, time: 1, priority: 1}
).sort({time: 1}).limit(20)

// Find nodes with errors
db.nodes.find(
  {"configuration.collect": true},
  {name: 1, "configuration.host": 1}
)

Network Diagnostics

# Test SNMP from NMIS server
snmpwalk -v 2c -c public <device-ip> system

# Test connectivity
ping -c 5 <device-ip>
traceroute <device-ip>

# Check for packet loss
mtr --report --report-cycles 100 <device-ip>

# Test SNMP port
nc -zv <device-ip> 161
nmap -sU -p 161 <device-ip>

Process Diagnostics

# Check NMIS processes
ps aux | grep nmis

# Check process tree
pstree -p | grep nmis

# Monitor process resources
top -p $(pgrep -d',' nmis)

# Check open files
lsof -p $(pgrep nmisd.worker)

Emergency Procedures

System Won’t Start

  1. Check critical services:
sudo systemctl status mongod
sudo systemctl status httpd  # or nginx
  1. Check for file system issues:
df -h
sudo dmesg | grep -i error
  1. Review system logs:
journalctl -xe
tail -100 /var/log/messages
  1. Start services manually:
sudo systemctl start mongod
sudo systemctl start nmis9d

Database Corruption

  1. Stop NMIS:
sudo systemctl stop nmis9d
  1. Backup current database:
mongodump --db nmisng --out /tmp/nmis-emergency-backup
  1. Repair database:
mongo nmisng --eval "db.repairDatabase()"
  1. If repair fails, restore from backup:
# See Backup and Restore documentation

Complete System Reset

This procedure will reset NMIS to initial state. Use only as last resort.
# Stop services
sudo systemctl stop nmis9d

# Backup critical data
sudo tar czf /tmp/nmis-emergency-backup.tar.gz \
  /usr/local/nmis9/conf/ \
  /usr/local/nmis9/database/

# Drop and recreate database
mongo nmisng --eval "db.dropDatabase()"

# Re-run setup
sudo /usr/local/nmis9/admin/setup_mongodb.pl

# Fix permissions
sudo /usr/local/nmis9/bin/nmis-cli act=fixperms

# Start services
sudo systemctl start nmis9d

Getting Help

Information to Collect

When requesting support, provide:
  1. System information:
uname -a
cat /etc/os-release
/usr/local/nmis9/bin/nmis-cli --version
mongod --version
  1. Error messages:
tail -100 /usr/local/nmis9/logs/nmis.log
tail -100 /var/log/mongodb/mongod.log
journalctl -u nmis9d -n 100
  1. Configuration:
# Sanitize passwords before sharing
grep -v password /usr/local/nmis9/conf/Config.nmis
  1. System status:
/usr/local/nmis9/bin/nmis-cli act=daemon-status
sudo systemctl status nmis9d mongod httpd
df -h
free -h

Support Resources

See Also

Build docs developers (and LLMs) love