tutorial

Monitoring Draw.io (diagrams.net) with Vigilmon

Draw.io is a powerful self-hosted diagramming tool — but when your instance goes down, engineers lose access to architecture diagrams and flowcharts. Here's how to monitor your self-hosted Draw.io server with Vigilmon.

Draw.io (also known as diagrams.net) is an open-source diagramming application you can self-host, giving your team full control over architecture diagrams, flowcharts, and ERDs without relying on a SaaS vendor. Self-hosting means you own the uptime — when the Draw.io container crashes, engineers can't open or save diagrams mid-session. Vigilmon keeps watch on your Draw.io instance so you catch failures before your team does.

What You'll Set Up

  • HTTP uptime monitor for the Draw.io web application
  • Health check for the Draw.io server process
  • SSL certificate expiry alerts for your Draw.io domain
  • Heartbeat monitoring for diagram export workers

Prerequisites

  • Self-hosted Draw.io instance running (Docker or JAR)
  • Draw.io accessible over HTTP or HTTPS on a domain or IP
  • A free Vigilmon account

Step 1: Monitor the Draw.io Web Application

The Draw.io frontend is the canvas your engineers use to create and edit diagrams. If this endpoint is unreachable, no one can load, create, or save diagrams.

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your Draw.io URL: https://drawio.yourdomain.com.
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Click Save.

If Draw.io is running behind a reverse proxy (nginx, Caddy, Traefik), the HTTP check confirms both the proxy and the Draw.io process are healthy. A 502 Bad Gateway response means the Draw.io container has crashed even though the proxy is still listening.


Step 2: Verify the Draw.io Application Loads Correctly

An HTTP 200 response confirms the server is answering, but it doesn't confirm the Draw.io JavaScript application actually loaded. Add a keyword check to catch misconfigured deployments:

  1. Open your Draw.io HTTP / HTTPS monitor.
  2. Under Advanced, set Expected body contains to diagrams.net — this string appears in every Draw.io HTML page.
  3. Click Save.

If a misconfigured environment variable causes the application to serve a blank page or error page instead of the diagram editor, the keyword check catches it even though the HTTP status was 200.


Step 3: Add a TCP Port Check

Draw.io typically serves on port 80 or 443. A TCP port monitor provides a low-level connectivity check independent of the HTTP layer:

  1. Add MonitorTCP Port.
  2. Host: drawio.yourdomain.com, Port: 443 (or 80 for HTTP-only deployments).
  3. Set Check interval to 2 minutes.
  4. Click Save.

This check catches network-level failures — firewall rule changes, container networking issues, or port binding conflicts — that would still return an error before the HTTP layer responds.


Step 4: Add SSL Certificate Monitoring

A lapsed TLS certificate blocks all Draw.io access with an untrusted certificate browser error. Engineers often interpret this as a full outage and may reach out before you've had a chance to renew.

  1. Open your Draw.io HTTP / HTTPS monitor.
  2. Enable Monitor SSL certificate under the SSL section.
  3. Set Alert when certificate expires in less than 21 days.
  4. Click Save.

With a 21-day lead time, you have three weeks to renew or investigate Let's Encrypt auto-renewal failures before your users see a certificate error page.


Step 5: Heartbeat Monitoring for Export Workers

Self-hosted Draw.io can be configured with an export service (a separate process that converts diagrams to PDF or PNG). Use Vigilmon's cron heartbeat to confirm this background process is running.

  1. In Vigilmon, click Add MonitorCron Heartbeat.
  2. Set the expected ping interval to match your export worker schedule (e.g. 60 minutes for an hourly health ping).
  3. Copy the heartbeat URL (e.g. https://vigilmon.online/heartbeat/abc123).
  4. Add the ping to the end of your export worker health check script:
#!/bin/bash
# Check that the Draw.io export service is responding
curl -sf http://localhost:8000/export/health && \
  curl -s https://vigilmon.online/heartbeat/abc123

Or in a Docker Compose health check:

services:
  drawio-export:
    image: jgraph/export-server
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/export/health"]
      interval: 60s
      timeout: 10s
      retries: 3

Add a post-health-check script that pings your Vigilmon heartbeat URL to confirm the job ran successfully.


Step 6: Configure Alert Channels

  1. Go to Alert Channels in Vigilmon and add Slack, email, or a webhook endpoint.
  2. Set Consecutive failures before alert to 2 on the main Draw.io monitor — Docker restarts and container recycling can cause a single probe miss.
  3. Use Maintenance windows in Vigilmon to suppress alerts when deploying a new Draw.io version:
# Suppress alerts during deployment
curl -X POST https://vigilmon.online/api/maintenance \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"monitor_id": "abc123", "duration_minutes": 10}'

docker pull jgraph/drawio && docker compose up -d

Summary

| Monitor | Target | What It Catches | |---|---|---| | Web application | https://drawio.yourdomain.com | Frontend down, proxy failure | | Keyword check | Page body contains diagrams.net | Blank page, misconfigured deployment | | TCP port | :443 | Network-level connectivity failure | | SSL certificate | Draw.io domain | Certificate renewal failure | | Cron heartbeat | Heartbeat URL | Export worker crash |

Draw.io turns your self-hosted server into a full diagramming platform — but self-hosted means you own the reliability. With Vigilmon watching the HTTP frontend, page content, TCP port, and SSL certificate, you'll know about failures in real time instead of hearing about them from an engineer who can't open their architecture diagram.

Monitor your app with Vigilmon

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

Start free →