October 1, 2025
Uptime Monitoring.
Server ยท Backend ยท FrontendA server monitoring system that periodically checks the status of hundreds of endpoints and sends automatic Discord notifications when downtime occurs, enabling faster incident response.

Description
Uptime Monitoring is a real-time availability platform built with Node.js and ExpressJS that watches websites, IP addresses, and network services. It periodically checks hundreds of endpoints and reports their health from a centralized dashboard.
When downtime or recovery is detected, the system automatically sends Discord notifications so teams can respond to incidents faster. It is built for scalable operational use, with concurrency handling, cron-based scheduling, and retry logic.
Background
Without automated monitoring, outages are often discovered only after users complain. Manually checking hundreds of endpoints is impractical, and delayed detection means slower recovery. A lightweight system was needed to continuously verify availability and push alerts straight into the team’s existing Discord workflow.
Goal
- Continuously monitor hundreds of endpoints without manual effort.
- Detect downtime and recovery quickly and reliably.
- Deliver actionable alerts to Discord to shorten incident response time.
Features
- HTTP/HTTPS, IP, and TCP port health checks.
- Real-time uptime dashboard with live status and statistics.
- Discord webhook alerts for DOWN and RECOVERY events, including downtime duration.
- Automated cron-based checks running every minute with concurrency limits.
- Retry logic to avoid false positives from transient failures.
- Bulk monitor import from TXT files with duplicate prevention.
Technologies
- Node.js and ExpressJS โ monitoring engine and web server.
- EJS โ server-side rendering of the dashboard.
- Discord Webhook โ automated alert delivery.
- node-cron โ interval-based scheduling of checks.
How to Run
git clone <repo-url> uptime-monitoring
cd uptime-monitoring
npm install
# Configure environment
cp .env.example .env
# Set DISCORD_WEBHOOK_URL, CHECK_INTERVAL, CONCURRENCY_LIMIT, PORT
npm start
# Dashboard available at http://localhost:3000
Technical Decisions
- Concurrency limiting on the cron worker so hundreds of checks run in parallel without exhausting sockets.
- Retry logic before alerting to filter out momentary blips and reduce alert noise.
- Discord webhooks chosen over email because alerts land instantly in the channels the team already watches.
What I Learned
- Scheduling and batching large numbers of network checks efficiently.
- Balancing detection speed against false positives with retries.
- Structuring notification payloads that are clear and actionable.
Notes
Reliably monitors hundreds of endpoints in production. Possible extensions include SLA/uptime history reports, multi-channel alerting, and configurable per-monitor thresholds.

Hey! I’m Fanny, the software engineer tending to this digital garden. You can read more about me, or subscribe by email.