MongoDB Monitoring & Maintenance Interview Questions

Introduction

This guide covers essential MongoDB monitoring and maintenance concepts commonly asked in technical interviews. Each question includes detailed answers and practical examples.

Medium

1. What are the key metrics to monitor in MongoDB?

Key MongoDB metrics to monitor:

  • Operation Execution Times
  • Memory Usage
  • Disk I/O
  • Connection Counts
  • Replication Lag
  • Index Usage
  • Cache Hit Ratio
Monitoring Categories:
  • Performance Metrics
  • Resource Utilization
  • Replication Status
  • Sharding Metrics
  • Security Events
Hard

2. How do you implement monitoring using MongoDB tools?

MongoDB monitoring implementation:

1. Using mongostat
# Basic monitoring
mongostat --uri="mongodb://localhost:27017"

# Detailed monitoring
mongostat --uri="mongodb://localhost:27017" \
    --discover \
    --json \
    --rowcount 10

# Custom metrics
mongostat --uri="mongodb://localhost:27017" \
    --rowcount 5 \
    --discover \
    --json \
    --all
2. Using mongotop
# Collection-level monitoring
mongotop --uri="mongodb://localhost:27017"

# Detailed collection stats
mongotop --uri="mongodb://localhost:27017" \
    --json \
    --rowcount 5

# Namespace-specific monitoring
mongotop --uri="mongodb://localhost:27017" \
    --rowcount 5 \
    --json \
    myapp.users
Hard

3. How do you implement custom monitoring solutions?

Custom monitoring implementation:

1. Using MongoDB Commands
# Server status
db.serverStatus()

# Current operations
db.currentOp()

# Database stats
db.stats()

# Collection stats
db.users.stats()

# Replication status
rs.status()

# Sharding status
sh.status()
2. Custom Monitoring Script
#!/bin/bash

# Monitoring configuration
MONGO_URI="mongodb://localhost:27017"
LOG_FILE="/var/log/mongodb/monitoring.log"
ALERT_THRESHOLD=80

# Check memory usage
MEMORY_USAGE=$(mongosh "$MONGO_URI" --eval "db.serverStatus().mem.resident" --quiet)
if [ "$MEMORY_USAGE" -gt "$ALERT_THRESHOLD" ]; then
    echo "High memory usage: $MEMORY_USAGE%" >> "$LOG_FILE"
fi

# Check disk space
DISK_USAGE=$(df -h /data/db | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt "$ALERT_THRESHOLD" ]; then
    echo "High disk usage: $DISK_USAGE%" >> "$LOG_FILE"
fi

# Check replication lag
REPL_LAG=$(mongosh "$MONGO_URI" --eval "rs.status().members[1].lag" --quiet)
if [ "$REPL_LAG" -gt 10 ]; then
    echo "High replication lag: $REPL_LAG seconds" >> "$LOG_FILE"
fi
Hard

4. How do you implement maintenance procedures?

Maintenance procedure implementation:

1. Index Maintenance
# List all indexes
db.users.getIndexes()

# Create index
db.users.createIndex({ "email": 1 }, { unique: true })

# Drop index
db.users.dropIndex("email_1")

# Rebuild index
db.users.reIndex()

# Compact collection
db.runCommand({ compact: "users" })
2. Database Maintenance
# Repair database
db.repairDatabase()

# Check database integrity
db.runCommand({ validate: "users" })

# Clean up orphaned documents
db.users.remove({ _id: { $exists: false } })

# Update statistics
db.users.stats()

# Compact database
db.runCommand({ compact: "myapp" })
Hard

5. What are the monitoring and maintenance best practices?

Follow these monitoring and maintenance best practices:

1. Monitoring Strategy
# Set up monitoring alerts
db.adminCommand({
    setParameter: 1,
    slowms: 100,
    logLevel: 1
})

# Configure profiler
db.setProfilingLevel(1, { slowms: 100 })

# Set up monitoring thresholds
MONITORING_THRESHOLDS = {
    "memory_usage": 80,
    "disk_usage": 85,
    "replication_lag": 10,
    "connection_count": 1000
}

# Implement monitoring checks
function checkSystemHealth() {
    const status = db.serverStatus();
    if (status.mem.resident > MONITORING_THRESHOLDS.memory_usage) {
        print("High memory usage alert");
    }
    // Add more checks...
}
2. Maintenance Schedule
# Daily maintenance tasks
0 2 * * * /scripts/mongodb-daily-maintenance.sh

# Weekly maintenance tasks
0 3 * * 0 /scripts/mongodb-weekly-maintenance.sh

# Monthly maintenance tasks
0 4 1 * * /scripts/mongodb-monthly-maintenance.sh

# Maintenance script example
#!/bin/bash
mongosh "$MONGO_URI" --eval "
    // Check and repair indexes
    db.users.reIndex();
    
    // Update statistics
    db.users.stats();
    
    // Clean up old data
    db.users.deleteMany({
        createdAt: { $lt: new Date(Date.now() - 90*24*60*60*1000) }
    });
"

Next Steps

Continue your MongoDB interview preparation with: