惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Y
Y Combinator Blog
Engineering at Meta
Engineering at Meta
D
Docker
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
腾讯CDC
P
Proofpoint News Feed
A
About on SuperTechFans
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
Google DeepMind News
Google DeepMind News
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
MyScale Blog
MyScale Blog
博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
N
Netflix TechBlog - Medium
G
Google Developers Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Stop Finding Out About Downtime from Users — Monitor Your...
Vigilmon · 2026-06-23 · via DEV Community

Vigilmon

There's a particular kind of dread that hits when a user DMs you "hey, is your app down?" You check the URL. Yep. Down. For how long? Who knows. When did it go down? Mystery.

If you've been there, you know the feeling. And if you haven't — you will.

Uptime monitoring means you get the alert, not your users. In this tutorial, I'll show you how to set up monitoring for your Node.js app in about 5 minutes using Vigilmon — a free uptime monitoring service. We'll also wire up a webhook so you can pipe those alerts directly to Slack or Discord.

What is Vigilmon?

Vigilmon is a lightweight uptime monitor that pings your endpoints every minute and alerts you when something goes wrong. It supports HTTP/HTTPS checks, TCP port checks, email and webhook alerts, and public status pages. The free tier gets you up to 10 monitors — enough to cover most side projects and small production apps.

Step 1: Sign Up and Add Your Monitor

Head to vigilmon.online and create a free account. Once you're in, click Add Monitor and fill in:

  • Name: Something memorable (e.g., "My Express API")
  • URL: Your app's health check endpoint (e.g., https://api.myapp.com/health)
  • Check interval: 1 minute

If you don't have a dedicated health endpoint yet, add one — it's worth it:

// Express.js health check endpoint
app.get('/health', (req, res) => {
  res.status(200).json({ status: 'ok', uptime: process.uptime() });
});

Vigilmon will ping this URL every minute and look for a 2xx response. If it gets anything else — or no response at all — it fires an alert.

Step 2: Set Up Email Alerts

In your monitor settings, go to Alert Channels and add your email address. That's it. Next time your app goes down, you'll get an email within 1-2 minutes.

This is your bare minimum. But email has latency — you might miss an alert in a busy inbox. For production apps, you want something louder.

Step 3: Add a Webhook for Slack/Discord Alerts

Vigilmon can POST a JSON payload to any URL when your monitor status changes. Here's how to wire that up.

Create a Webhook Receiver in Node.js

Here's a simple Express app that receives Vigilmon webhooks and forwards them to Slack:

const express = require('express');
const https = require('https');

const app = express();
app.use(express.json());

const SLACK_WEBHOOK_URL = process.env.SLACK_WEBHOOK_URL;

app.post('/webhooks/vigilmon', (req, res) => {
  const { monitor_name, status, url, checked_at } = req.body;

  const emoji = status === 'down' ? '🔴' : '';
  const message = `${emoji} *${monitor_name}* is ${status.toUpperCase()}\n URL: ${url}\n Detected: ${checked_at}`;

  const payload = JSON.stringify({ text: message });
  const slackUrl = new URL(SLACK_WEBHOOK_URL);

  const options = {
    hostname: slackUrl.hostname,
    path: slackUrl.pathname + slackUrl.search,
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
  };

  const request = https.request(options);
  request.write(payload);
  request.end();

  res.sendStatus(200);
});

app.listen(3000, () => console.log('Webhook receiver running on port 3000'));

Deploy this alongside your app (or as a standalone service) and grab the public URL. Then in Vigilmon, go to Alert Channels → Add Webhook and paste in your endpoint: https://yourdomain.com/webhooks/vigilmon.

Routing to Discord Instead

Discord uses a slightly different webhook payload format:

// For Discord, swap out the Slack payload
const discordPayload = JSON.stringify({
  content: `${emoji} **${monitor_name}** is ${status.toUpperCase()}${url}`,
});

Same idea — point it at your Discord channel's incoming webhook URL and you'll get real-time pings in your server.

Step 4: Share a Public Status Page

One of the underrated features of Vigilmon is the public status page. Go to Status Pages in the dashboard and create one that lists your monitors. You'll get a shareable URL like:

https://status.vigilmon.online/your-page-slug

Add this link to your app's footer, docs, or support email. When something breaks, customers can check status themselves before flooding your inbox with "is it just me?" questions.

Why This Matters

Here's the honest truth: most outages last under 10 minutes for simple restarts or deploy errors. But without monitoring, those 10 minutes are invisible to you and visible to every user who hits a 503.

With Vigilmon running:

  • You know within about 1 minute when something goes down
  • You have exact timestamps for incident reports and post-mortems
  • Customers can check a status page instead of guessing

Wrapping Up

Getting uptime monitoring set up for a Node.js app takes less than 5 minutes with Vigilmon — free account, one monitor, email alerts, and an optional webhook for Slack or Discord.

Give it a try at vigilmon.online and drop a comment below with how you've set up alerting for your own apps. I'm especially curious what people are doing with webhooks in production.