A small-team VPS monitoring checklist: six things to check after launch
Author: OpsMate team
Updated
Based on hands-on troubleshooting with OpsMate. Run commands only on servers you are authorized to access; replace paths and service names for your environment.
Small-team VPS monitoring means a minimal process that detects problems, keeps evidence, and reaches a human—not turning on every alert at once. A working homepage does not mean someone will notice the next outage. Without a dedicated operator, finish the six items below as your first pass after launch.
1. Scene: who this checklist is for
For developers and founders who run one or a few Linux VPS hosts themselves, or who inherited a contractor-built box and cannot hire full-time ops. Not for mature SRE platforms that only need threshold tuning—those teams can still use this as a cross-check.
Typical gaps: only watching whether the home page loads; learning about full disks from user complaints; alerts going to a departed teammate; backup jobs that never had a restore drill.
If you are still inventorying an inherited server, finish that first: Inherited a server: what to check first.
2. Steps: choose what to monitor (six items)
Write down targets and owners before enabling alerts. Use your own baselines—there is no universal VPS percentage.
2.1 External availability
From outside the server, check a real user-facing HTTPS path. Track status and latency; a running process is not proof users can reach you.
curl -sS -o /dev/null -w '%{http_code} %{time_total}s\n' --max-time 10 https://example.com/
Replace example.com with your entry URL. Alert after consecutive failures (for example N=2–3) to cut one-off network noise. For night-time triage order, see Site down at 2 a.m..
2.2 Resource trends
Watch CPU, available memory, disk capacity, and inodes. Thresholds should use baseline behavior and duration, not a single sample.
uptime
nproc
free -h
df -h
df -i
- Compare
uptimeload averages withnproc. - In
free -h, useavailable; cache is not necessarily a fault. - When
df -ihits 100%, writes fail and apps often look “down.” See Linux disk usage spike.
2.3 Services and containers
Record expected services, ports, health checks, restart counts, and an owner per service.
systemctl --failed --no-pager
sudo ss -ltnp
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
If a container keeps Restarting, get the exit code and logs first: Docker containers keep restarting.
2.4 Error logs
Investigate new or growing error patterns next to deploy times. Set retention and rotation so logs do not fill the disk (Docker logs filling the disk).
journalctl -p err --since "1 hour ago" --no-pager | tail -n 80
Redact tokens, connection strings, and personal data before sharing.
2.5 Backup and recovery
Do not stop at “backup job succeeded.” Rehearse restore in isolation and write down acceptable data loss (RPO) and recovery time (RTO). An untested backup does not count as done.
2.6 Notification and response
Name who receives, who acknowledges, and who may change production. Run one manual test that an alert actually reaches a phone. Periodically stop a service on purpose (or induce a failure) so you prove the push still arrives, and do not run that channel on the business host, or it dies with the machine. Receiving alerts alone does not require storing SSH credentials in the cloud; remote SSH from Telegram does—see Server alerts in Telegram.
3. A read-only baseline (do once on launch day)
At a quiet time, log in and note the observation time:
uptime
free -h
df -h
df -i
systemctl --failed --no-pager
docker ps --format 'table {{.Names}}\t{{.Status}}'
These target Linux; skip lines if systemd or Docker is missing. One healthy snapshot is not continuous reliability. External checks, restore drills, and notification delivery still need separate verification.
4. Alerts: stay useful, not noisy
Start from business hours and failure impact:
| Kind | Suggestion |
|---|---|
| Critical entry | Probe continuously; alert after N consecutive failures (e.g. N=3) |
| Resources | Baseline + duration; extra check after deploys |
| Repeats | Deduplicate or snooze so one incident does not flood you |
| Escalation | Separate “notify only” from “needs an owner’s approval” |
Frequency and thresholds depend on workload—this guide does not ship a universal VPS percentage. Put host name, check name, and evidence time in the alert text.
5. How this fits OpsMate
OpsMate (itops.sh) puts an SSH terminal and AI on one page, with patrols and Telegram alerts. Use it to turn the six items into repeatable checks; it does not replace your decision on monitoring scope.
After connecting a server, you can ask the AI to list services and risks, for example:
List running services, observable risks, and proposed monitoring checks. Gather information first and say what is still unverified. I will confirm the monitoring scope. Explain impact, rollback, and verification before suggesting any repair.
Boundaries:
- The AI is mainly for troubleshooting. Commands that fail the safety check are blocked and never run. Low-risk fixes run automatically by default, and every step is logged. A recommendation is not approval.
- Each time you ask the AI for help, recent terminal output is sent to the cloud AI along with your message, so remove sensitive information first.
- Desktop keeps SSH credentials on your machine by default; cloud patrols and Telegram SSH need credentials you explicitly make available to the cloud.
- For what OpsMate does and does not do on its own, see the FAQ.
Patrols are for continuous watching; the terminal dual path is for “right now” troubleshooting—see Check logs with AI and SSH commands.
Try OpsMate
500 free AI calls per month; no server limit. Desktop keeps SSH credentials on your machine by default.
References
- curl man page — probing HTTPS status and timing from outside the host
- df(1) — capacity and inode baselines before resource alerts
- Prometheus overview — optional reference if you later self-host metrics and alerts
- journalctl(1) — read-only system error log checks
Need help interpreting the evidence?
OpsMate (itops.sh) puts an SSH terminal and AI on the same page, and you review the evidence. Each time you ask the AI for help, recent terminal output is sent to the cloud AI along with your message, so remove sensitive information first.
Start free Desktop with local credentials