Uptime Monitoring With No Paid Observability Stack

A step-by-step checklist to get real uptime alerts for web apps and APIs using free tools, without paying for an observability stack.

Maysan Engineering Team · · 5 min read

Xin

Most teams find out their site is down when a customer calls — usually at 2 AM, from a different timezone. If you run a B2B portal, a payment flow, or a dashboard that finance teams open every morning, silent downtime costs you trust you cannot bill back. You do not need Datadog, New Relic or a five-figure monthly contract to know within three minutes that something broke.

Decide what up actually means before you install anything

Uptime is not one number. A homepage returning 200 while the login API throws 500 is not up. Before picking tools, write down the five to eight things that would make a customer email you, and treat those as your probe list.

  • The homepage, or better, a /health endpoint that checks database connectivity and returns 200 only when the app can actually serve traffic
  • TLS certificate expiry, warning at 21 days rather than 3
  • DNS resolution, especially if you moved nameservers in the last quarter
  • A cron or worker heartbeat — the dead man's switch pattern, where the job pings a URL and you get alerted when the ping does not arrive
  • Third-party dependencies you cannot fix but must know about: payment gateway, WhatsApp Business API, your SMTP relay

Then pick a target. 99.9% uptime is 43 minutes of downtime a month. 99.5% is 3 hours 36 minutes. Most Indian SMB web apps realistically sit between those two, and unless you sell to enterprises with signed SLAs, that is fine. The number matters because it tells you how fast you must detect a problem. A one-minute probe interval with two-failure confirmation gives roughly a 2-3 minute detection window, comfortably under any of these budgets.

Build the free stack from four parts

  • The probe. Uptime Kuma (self-hosted, MIT licensed), Better Stack's free tier, or Healthchecks.io free for cron heartbeats. All three handle HTTP checks, keyword matching and certificate expiry.
  • The host. A 1 vCPU / 1 GB VPS in Mumbai or Singapore, roughly ₹400-700 a month — the only real cost in this stack. If you are sizing one, our notes on self-managed servers cover what we usually recommend.
  • The alert route. A Telegram bot posting to an #ops channel is free, instant and reaches every phone. Email alone is where alerts go to die.
  • The status page. Uptime Kuma ships one. Point status.yourdomain.com at it before you need it, not during an incident.

The one design rule that matters: run the monitor somewhere other than the thing it monitors. If Uptime Kuma lives on the same VPS as your app, a host reboot takes down both and you get silence instead of an alert. Splitting app servers from tooling, and keeping backups off-site, is a small architecture decision that pays off the first time a host dies.

Configure alerts so people still trust them

  • Confirm before you alert. Two failed checks from two locations, or two consecutive failures at one-minute intervals. A single dropped packet should never wake anyone.
  • Split by severity. Site down or payment failures go to phone and WhatsApp. Certificate expiry warnings, disk above 85%, memory creeping up, go to email. If everything is P1, nothing is.
  • Add an acknowledgement step. If nobody acknowledges within 10 minutes, escalate to a second person. Uptime Kuma supports notification groups; a free tool like ntfy or a small cron can fake escalation if you do not want to pay for it.
  • Use maintenance windows. Deploys are not outages. Toggle the window before you push, or you will train the team to ignore alerts.
  • Review false positives monthly. If a check fired five times and none were real, fix the threshold or delete the check.

A worked example with real numbers

Take a typical setup: a Node app and Postgres on one VPS, a nightly GST reconciliation cron at 2 AM, and a payment gateway webhook that matters more than the marketing site.

  • Uptime Kuma on a separate ₹500/month VPS, checking /health every 60 seconds from two locations: about ₹500/month
  • Healthchecks.io free tier for the 2 AM cron — the job pings a URL, and no ping by 2:30 AM raises an alert: ₹0
  • Telegram bot posting to #ops, plus a WhatsApp message to the on-call phone for anything tagged P1: ₹0 to a few rupees per message
  • Certificate expiry check with a 21-day warning, and a disk-space check at 85%: ₹0

Total: under ₹700 a month. Setup time is realistically 3-4 hours for a single app, or about a day if you add the cron heartbeat, certificate checks and a public status page.

Why that day is worth it: with 60-second probes and two-failure confirmation, you are alerted 2-3 minutes after a failure starts. Against a 99.5% target of 3 hours 36 minutes a month, catching one bad morning in three minutes instead of forty is the entire return.

Where to start

Do the smallest version this week: one VPS, Uptime Kuma, three checks — homepage, /health, and one cron heartbeat — routed to a Telegram group. Add certificate and disk checks next month, once the alerts have proven themselves quiet. If you would rather not run the plumbing yourself, Maysan Labs wires this into the platforms we build, but the checklist above is a weekend project for most teams, and it is perfectly fine to just do it.

Buying software or a website?

Twelve questions to ask any vendor before you sign: price, your data, fit for an Indian business and support.

Get the free checklist

Written by Maysan Engineering Team at Maysan Labs, a software studio in Gurgaon, India. Follow us on LinkedIn