Overview
NMIS 9 uses MongoDB as its primary database for storing configuration, operational data, events, and performance metrics. This guide covers database administration, maintenance, and optimization.Database Connection
Configuration
Database connection settings are configured in/usr/local/nmis9/conf/Config.nmis:
Connection Timeouts
db_connection_timeout- Maximum time to establish database connection (default: 5000ms)db_query_timeout- Maximum time for query execution (default: 5000ms)db_ping_timeout- Timeout for connection health checks (default: 1000ms)
Write Concern
db_write_concern controls data durability:
0- No acknowledgment (fastest, least safe)1- Acknowledged writes (default, balanced)majority- Majority of replica set (safest, slowest)
Database Structure
Collections
NMIS uses the following main collections:nodes
Stores node configuration and metadata:inventory
Stores device inventory data (interfaces, components, etc.):events
Stores active and historical events:queue
Stores scheduled jobs and operations:opstatus
Stores operational status data:sessions
Stores user authentication sessions (capped collection).audit
Audit log for system changes and administrative actions.Database Indexes
NMIS maintains indexes for query performance. View current indexes:Ensure Indexes
Create or update all required indexes:Key Indexes
nodes collection:uuid(unique)name(unique per cluster)cluster_idconfiguration.groupconfiguration.active
node_uuid,conceptcluster_id,historicpath_keysenabled,historic
node_uuid,activecluster_id,historicevent,activestartdateexpire_at(TTL index)
type,in_progresstime,priorityargs.uuid
Database Setup
Initial Setup
Run the MongoDB setup script to create databases, users, and configure authentication:Run setup script
- NMIS database and collections
- Database users with appropriate permissions
- Required indexes
- Initial configuration
Enable authentication (if not already enabled)
The script will offer to enable MongoDB authentication by modifying
/etc/mongod.conf:Authentication Setup
If setting up authentication manually:Database Maintenance
Database Cleanup
Remove old records based on retention policies:Purge Old Files
Remove old files and purge completed outages:Compact Collections
Reclaim disk space after deletions:Repair Database
If database corruption is suspected:Performance Tuning
Query Performance
Analyze slow queries:Collection Statistics
View collection statistics:Database Statistics
WiredTiger Cache Size
Adjust WiredTiger cache in/etc/mongod.conf:
Connection Pooling
NMIS manages connection pooling automatically. For custom applications:Monitoring
Database Server Status
- Connections: current, available
- Operations: queries, inserts, updates, deletes per second
- Network: bytes in/out
- Memory: resident, virtual, mapped
- WiredTiger cache: bytes in cache, pages read/written
Current Operations
View running operations:Replication Lag
For replica sets:Disk Usage
Monitor database disk usage:Backup and Restore
See Backup and Restore for detailed backup procedures including:- MongoDB dump and restore procedures
- Scheduled backup scripts
- Backup verification
- Disaster recovery
Troubleshooting
Connection Failures
Check MongoDB status:Authentication Failures
Verify credentials:High Memory Usage
- Check WiredTiger cache size
- Review slow queries and missing indexes
- Consider increasing system RAM
- Adjust cache size in mongod.conf
Slow Queries
- Enable query profiling
- Review execution plans
- Add missing indexes
- Consider query optimization
Disk Space Issues
- Run database cleanup:
act=dbcleanup - Purge old files:
act=purge - Compact collections
- Archive or remove old data
- Consider increasing disk capacity
Best Practices
- Enable authentication in production environments
- Use encrypted passwords in NMIS configuration
- Schedule regular cleanups to manage database growth
- Monitor disk space and set up alerts
- Create database indexes for custom queries
- Regular backups with tested restore procedures
- Monitor query performance and optimize as needed
- Keep MongoDB updated to latest stable version
- Use replica sets for high availability (production)
- Document custom configurations and changes