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.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your Draw.io URL:
https://drawio.yourdomain.com. - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - 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:
- Open your Draw.io HTTP / HTTPS monitor.
- Under Advanced, set Expected body contains to
diagrams.net— this string appears in every Draw.io HTML page. - 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:
- Add Monitor →
TCP Port. - Host:
drawio.yourdomain.com, Port:443(or80for HTTP-only deployments). - Set Check interval to
2 minutes. - 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.
- Open your Draw.io HTTP / HTTPS monitor.
- Enable Monitor SSL certificate under the SSL section.
- Set Alert when certificate expires in less than
21 days. - 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.
- In Vigilmon, click Add Monitor → Cron Heartbeat.
- Set the expected ping interval to match your export worker schedule (e.g.
60minutes for an hourly health ping). - Copy the heartbeat URL (e.g.
https://vigilmon.online/heartbeat/abc123). - 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
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook endpoint.
- Set Consecutive failures before alert to
2on the main Draw.io monitor — Docker restarts and container recycling can cause a single probe miss. - 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.