tutorial

Monitoring IT-Tools with Vigilmon

IT-Tools gives your team 60+ browser-based utilities in one self-hosted app — no external services, no data leakage. Here's how to monitor nginx availability, confirm the correct app is being served, and set SSL alerts with Vigilmon.

IT-Tools is a self-hosted collection of 60+ browser-based utilities — JWT decoders, UUID generators, hash tools, subnet calculators, regex testers, QR code generators, and more — all in a single Vue.js app served by nginx. The pitch is simple: sensitive data (API keys, JWTs, internal IP ranges) stays on your own infrastructure instead of being pasted into jwt.io or online regex tools. But "simple static app" doesn't mean "no monitoring needed." A broken nginx config, a failed Docker container, or a reverse proxy misconfiguration leaves your team with a blank page and no tools. Vigilmon keeps watch so the toolbox stays open.

What You'll Set Up

  • HTTP availability monitor for the IT-Tools nginx server
  • Keyword check to confirm the correct application bundle is being served
  • Static asset probe to verify nginx file serving is healthy
  • SSL certificate expiry alerts for HTTPS IT-Tools deployments
  • Container health heartbeat for Docker-based IT-Tools installations

Prerequisites

  • IT-Tools deployed via Docker (official corentinth/it-tools image) or built from source
  • IT-Tools accessible on port 80 or behind a reverse proxy on a custom domain
  • A free Vigilmon account

Step 1: Monitor IT-Tools nginx Availability

IT-Tools runs nginx inside Docker serving a pre-built Vue.js SPA. A 200 response on port 80 confirms the nginx server and Docker container are running:

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your IT-Tools URL: http://tools.yourdomain.com (or https:// if TLS-terminated at a reverse proxy or Caddy sidecar).
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Click Save.

If IT-Tools is behind a reverse proxy (nginx, Traefik, Caddy), monitoring the public URL validates both the proxy routing and the upstream Docker container — a single check covers two failure points.


Step 2: Keyword-Check for Correct Application Content

When multiple applications share a reverse proxy, a misconfiguration can serve the wrong site on the IT-Tools domain — returning 200 from a different application. Add a keyword monitor that confirms the IT-Tools bundle is what's actually being served:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://tools.yourdomain.com
  3. Set Check interval to 2 minutes.
  4. Enable Keyword check and enter IT-Tools as the expected keyword.
  5. Click Save.

The IT-Tools HTML shell contains IT-Tools in the <title> and application metadata. A reverse proxy misconfiguration that serves a different site will fail this keyword check even if it returns HTTP 200. This is especially useful in environments where IT-Tools is one of many services on the same host.


Step 3: Static Asset Probe for nginx File Serving Health

IT-Tools is a pure static application — if nginx's static file serving breaks (wrong root path, file permission change, volume mount failure), the index.html may load but no JavaScript, CSS, or image assets will be served. The app will appear to load but will be non-functional. Probe a specific static asset directly:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://tools.yourdomain.com/favicon.svg
  3. Set Check interval to 5 minutes.
  4. Set Expected HTTP status to 200.
  5. Click Save.

The favicon is a small, predictable asset that nginx serves from the SPA root. A 200 response confirms nginx can locate and serve files from the static root — validating that volume mounts, file permissions, and nginx configuration are all intact.


Step 4: SSL Certificate Alerts for HTTPS IT-Tools

IT-Tools should be served over HTTPS when hosting it for a team — developers paste sensitive data into these tools (JWT tokens with real signatures, internal API keys for hashing, private IP ranges for subnet calculations). Cleartext HTTP transmission of that data to a shared internal tool is a security risk. Add SSL monitoring:

  1. Open the HTTPS monitor created in Step 1 (if you're using HTTPS) or create a new HTTPS monitor.
  2. Enable Monitor SSL certificate.
  3. Set Alert when certificate expires in less than 21 days.
  4. Click Save.

If IT-Tools is served via a Caddy reverse proxy, Caddy handles automatic certificate renewal — but the renewal depends on DNS reachability and ACME challenge success. An expired certificate causes browser security warnings that block access to the tools entirely.


Step 5: Heartbeat Monitoring for Docker Container Health

IT-Tools has no dynamic backend — there's no database, no API, and no background jobs. But the Docker container can still become unhealthy silently: the container restarts in a crash loop, the nginx process exits but Docker considers the container running, or a volume mount fails after a host reboot.

Use a scheduled heartbeat script that validates internal nginx accessibility independent of any reverse proxy:

  1. In Vigilmon, click Add MonitorCron Heartbeat.
  2. Name it IT-Tools Container Heartbeat.
  3. Set the expected ping interval to 10 minutes.
  4. Copy the heartbeat URL (e.g., https://vigilmon.online/heartbeat/abc123).

Create a health check script on the Docker host:

#!/bin/bash
# IT-Tools container health check — run via cron every 10 minutes

CONTAINER_NAME="${IT_TOOLS_CONTAINER:-it-tools}"
VIGILMON_HEARTBEAT="https://vigilmon.online/heartbeat/abc123"

# Check if container is running
if ! docker inspect --format='{{.State.Running}}' "${CONTAINER_NAME}" 2>/dev/null | grep -q "true"; then
  echo "$(date): IT-Tools container is not running" >&2
  exit 1
fi

# Validate nginx is serving content inside the container
HTTP_STATUS=$(docker exec "${CONTAINER_NAME}" \
  wget -q -O /dev/null -S http://localhost:80/ 2>&1 | grep "HTTP/" | awk '{print $2}')

if [ "$HTTP_STATUS" = "200" ]; then
  curl -s --max-time 10 "${VIGILMON_HEARTBEAT}"
  echo "$(date): IT-Tools health check passed"
else
  echo "$(date): IT-Tools nginx returned HTTP ${HTTP_STATUS}" >&2
fi

Add to cron:

# /etc/cron.d/it-tools-health
*/10 * * * * root /usr/local/bin/it-tools-healthcheck.sh >> /var/log/it-tools-health.log 2>&1

This inner-container probe catches the case where nginx has crashed inside a container that Docker still considers running — a failure mode that external HTTP monitors won't catch until the container restarts and the port stops responding.


Step 6: Configure Alert Channels

  1. Go to Alert Channels in Vigilmon and add email, Slack, or a webhook.
  2. For the nginx availability and keyword monitors, set Consecutive failures before alert to 2 — a brief Docker container restart during a docker compose pull upgrade will cause one failed check.
  3. For the static asset probe, set Consecutive failures before alert to 3 — the asset check can occasionally time out due to network blips without indicating a real nginx failure.
  4. Tag all monitors with it-tools for easy filtering in the Vigilmon dashboard.

Summary

| Monitor | Target | What It Catches | |---|---|---| | HTTP availability | http(s)://tools.domain.com | Docker container down, nginx crash | | Keyword check | Root URL — "IT-Tools" | Reverse proxy misconfiguration | | Static asset | /favicon.svg | nginx file serving failure | | SSL certificate | HTTPS IT-Tools URL | Certificate expiry | | Cron heartbeat | Container heartbeat URL | Container crash loop, silent nginx failure |

IT-Tools is deliberately simple — no database, no users, no backend API. That simplicity is its strength, and it makes monitoring equally focused: keep nginx running, keep the Docker container healthy, and keep TLS valid. With Vigilmon watching availability, content correctness, and static serving health, your team's tool-box stays available without anyone needing to manually check it.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →