VPS Monitoring ও Maintenance

লেসন ২৩ / ৩৮

📊 Live Monitoring

htop                       # CPU/RAM/process 🔥
btop                       # prettier
iotop                      # disk I/O per process
nethogs                    # bandwidth per process
glances                    # all-in-one
sudo apt install glances

💾 Disk Full Crisis

# Quick check
df -h                          # which partition full
du -sh /var/log/* | sort -rh   # log culprit
ncdu /                         # interactive

# Common culprits + fix
journalctl --disk-usage
sudo journalctl --vacuum-time=7d

# Old kernels
sudo apt autoremove --purge

# Docker leftover
docker system prune -af --volumes

# Apt cache
sudo apt clean

# Big logs
sudo truncate -s 0 /var/log/nginx/access.log
# Or rotate (better)

🔄 Log Rotation

sudo nano /etc/logrotate.d/myapp

/var/log/myapp/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    create 0640 deploy deploy
    sharedscripts
    postrotate
        systemctl reload myapp >/dev/null 2>&1 || true
    endscript
}

# Test
sudo logrotate -d /etc/logrotate.d/myapp
sudo logrotate -f /etc/logrotate.d/myapp   # force run

🚨 Memory Leak Detection

# Top memory eaters
ps aux --sort=-%mem | head

# Per-process tracking
while true; do
    ps -o pid,rss,cmd -p $(pgrep node)
    sleep 60
done

# Tools
sudo apt install smem
smem -t -k

📡 Uptime Monitoring (External)

  • UptimeRobot — 50 monitor free
  • Better Stack (Better Uptime) — modern UI
  • Hetrix Tools — server resource monitor too
  • Uptime Kuma — self-hosted (Docker)
  • Cronitor — cron job monitoring

🐳 Self-host Uptime Kuma

docker run -d \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:1

📧 Email Alert Setup

sudo apt install msmtp msmtp-mta -y

# /etc/msmtprc
defaults
auth on
tls on
tls_starttls on
logfile /var/log/msmtp.log

account gmail
host smtp.gmail.com
port 587
from you@gmail.com
user you@gmail.com
password app-password-here

account default : gmail

# Test
echo "Test alert" | mail -s "Server Alert" you@gmail.com

# Use in script
[ $DISK_USAGE -gt 90 ] && echo "Disk 90%+" | mail -s "URGENT" you@gmail.com

📈 Prometheus + Grafana (advanced)

# Quick setup with node_exporter
docker run -d --name node-exporter \
  --net="host" \
  --pid="host" \
  prom/node-exporter

# Metrics: http://server-ip:9100/metrics
# Add to Prometheus → visualize in Grafana

📋 Maintenance Checklist

Daily:
- Uptime check (automated)
- Error log review
- DB backup verify

Weekly:
- Disk usage review
- Failed login attempts
- SSL expiry check
- OS security update

Monthly:
- Full backup test (restore!)
- Performance review
- Cost optimization
- Dependency update

Quarterly:
- Security audit
- Disaster recovery drill
- Document update

💾 Backup Strategy 3-2-1

  • 3 copies of data
  • 2 different media
  • 1 offsite copy
# Daily local
/backup/db_*.sql.gz

# Weekly to S3
aws s3 sync /backup s3://my-backups/

# Test restore monthly!
# Untested backup = no backup

🎓 মূল কথা ⭐

Monitor + alert ছাড়া production = blind flying। UptimeRobot 5 min setup free। Daily backup + monthly restore test mandatory। Log rotation না হলে disk full disaster।