A VPS rarely fails without warning. Disks fill up over weeks, memory leaks grow slowly, and load creeps up as traffic grows. Health monitoring catches these trends early, so you fix them on your schedule instead of during an outage. You don’t need a big monitoring stack to start: a few commands, an uptime checker, and simple alerts cover most risks.

The metrics that matter

Metric Healthy Warning signs
CPU usage Varies with load Sustained 90–100%
CPU steal (st) Near 0% Consistently above ~10%
Load average Below the number of vCPUs Above vCPU count for long periods
Memory “available” well above zero Low available + swap in heavy use; OOM kills
Disk space < 80% used > 90%: services start failing at 100%
Disk I/O wait (wa) Low single digits High iowait, slow queries
Network Within plan limits Saturated bandwidth, packet loss, unexpected spikes
Services Running, responding Restarts, failed units, errors in logs
Uptime from outside 200 OK, fast Timeouts, 5xx errors

Quick health check (2 minutes)

uptime                          # load averages
free -h                         # memory and swap
df -h                           # disk space
df -i                           # inodes (can run out before space does)
vmstat 1 5                      # CPU: us, sy, id, wa, st
top -o %CPU                     # or htop: top processes
systemctl --failed              # failed services
journalctl -p err -b | tail     # errors since boot
dmesg -T | tail                 # kernel messages (OOM kills, disk errors)

See htop, the df command, and load average explained.

Monitor from outside: uptime checks

Internal metrics can’t tell you if the site is reachable for users. Add external checks:

  • HTTP(S) checks of your main pages (status code and response time);
  • TCP checks for other services (SSH, mail, game servers);
  • TLS certificate expiry checks.

Uptime Kuma is easy to self-host on a second small server, so it keeps working when the main one fails. See Uptime Kuma monitoring and uptime monitoring tools.

Monitoring tools by effort

Effort Tool What you get
Minimal Uptime Kuma + a disk-space cron alert Downtime and disk alerts
Low Netdata Real-time dashboards, hundreds of metrics, built-in alerts. See Netdata monitoring
Medium Prometheus + node_exporter + Grafana Long-term history, custom dashboards and alert rules. See Grafana and Prometheus monitoring
Medium Zabbix Agent-based monitoring with templates and SNMP for network devices. See SNMP monitoring on Linux

A simple disk-space alert

If you only add one alert, make it disk space:

#!/bin/bash
# /usr/local/bin/disk-alert.sh
THRESHOLD=85
df -P -x tmpfs -x devtmpfs | awk 'NR>1 {gsub("%","",$5); if ($5 > T) print $6, $5"%"}' T=$THRESHOLD | \
while read mount use; do
  echo "Disk $mount at $use on $(hostname)" | mail -s "Disk alert $(hostname)" [email protected]
done
sudo chmod +x /usr/local/bin/disk-alert.sh
echo "*/30 * * * * root /usr/local/bin/disk-alert.sh" | sudo tee /etc/cron.d/disk-alert

Sending mail requires a working mail setup. A webhook to Slack, Discord or Telegram with curl works just as well. See crontab guide.

Alert thresholds that work

Alert Suggested threshold
Site down 2–3 failed checks in a row
Disk usage 85% warning, 95% critical
Memory available < 10% for 10 minutes
CPU steal > 15% for 15 minutes
Load > 2 × vCPUs for 15 minutes
Certificate expiry < 14 days
Failed systemd units Any

Alert on things that need action. Too many noisy alerts get ignored. See alerting best practices.

Logs are health data too

Errors in application, web server and system logs often appear before outages. Rotate logs so they don’t fill the disk, and scan them for spikes in errors. See log management and logrotate.

Weekly checklist

  • Disk usage and growth trend
  • Pending security updates (apt list --upgradable)
  • Failed services and recurring errors in logs
  • Backups ran, and a test restore works occasionally
  • Resource trends: is RAM or CPU steadily climbing?
  • Certificates and domain renewals

When the metrics say “upgrade”

If CPU, RAM or disk stay near their limits after you’ve optimized (caching, tuning, cleanup), it’s time for a bigger plan. Upgrades on VPS.DO are done by opening a support ticket. See when to upgrade your VPS and VPS performance troubleshooting.

Quick reference

Check Command
Load uptime
Memory free -h
Disk df -h, df -i
CPU / steal / iowait vmstat 1 5
Failed services systemctl --failed
Errors journalctl -p err -b

Related: CPU and RAM monitoring and observability basics.

  • Monitoring
  • Linux
  • VPS