Monitoring Your Directus Instance with Vigilmon (Free, Multi-Region)
Directus is more than a CMS — it's an open-source data platform that wraps any SQL database and exposes it as a REST and GraphQL API. Teams use it to power their apps, dashboards, websites, and internal tools.
Which means when Directus goes down, it's not one app that breaks — it's all of them.
This guide covers how to use Directus's built-in health endpoint, set up external uptime monitoring from multiple regions with Vigilmon, and get alerted the moment the API becomes unavailable.
Why Directus monitoring matters
Directus sits at the centre of your data architecture. A typical web app has one failure domain; Directus has many dependents:
- Frontend websites pulling collections via REST/GraphQL
- Mobile apps reading and writing data through the API
- Automated scripts or pipelines using Directus as a data layer
- Webhook automations that fire on content changes
When the Directus process goes down — or gets stuck in a broken state — all of these fail simultaneously, often silently. An external monitor that probes from outside your infrastructure is the fastest way to detect the failure before users start complaining.
Step 1: Use Directus's built-in server health endpoint
Directus ships with a dedicated health endpoint at /server/health. No configuration required.
curl https://your-directus.com/server/health
A healthy Directus instance responds with HTTP 200 and a JSON body:
{
"status": "ok",
"releaseId": "10.x.x",
"serviceId": "your-service-id",
"checks": {
"database": [{"status": "ok", "componentType": "datastore"}],
"storage": [{"status": "ok", "componentType": "objectstore"}]
}
}
This endpoint checks:
- The Directus Node.js process
- Database connectivity (PostgreSQL, MySQL, SQLite, etc.)
- File storage (local or S3-compatible)
A single endpoint gives you the full picture. If any check fails, the response changes to status: "error" and includes which component is degraded.
Verify the endpoint is public
By default, /server/health is public — no authentication required. Confirm:
curl -I https://your-directus.com/server/health
# HTTP/2 200
If you've locked it down behind authentication, add an exception in your Directus config or proxy rules for this specific path.
Step 2: Set up Vigilmon HTTP monitoring
With the health endpoint confirmed, point Vigilmon at it:
- Sign up at vigilmon.online — free tier, no credit card
- Click New Monitor → HTTP
- Enter
https://your-directus.com/server/health - Set the check interval (5 minutes on the free tier)
- Save
Vigilmon probes from multiple geographic regions. If your Directus instance is unreachable from any region, it opens an incident immediately.
Add a keyword monitor for deeper validation
Because /server/health returns JSON, add a keyword monitor that asserts the response body, not just the status code:
- New Monitor → Keyword
- URL:
https://your-directus.com/server/health - Keyword:
"status":"ok" - If the keyword is absent, Vigilmon treats it as a failure
This catches the case where Directus returns HTTP 200 but the body contains "status":"error" — meaning the database is down even though the process is running.
Recommended monitor set for Directus
| Monitor | URL | Type | What it catches |
|---|---|---|---|
| Server health | /server/health | HTTP | Process down, port not listening |
| Status assertion | /server/health | Keyword | Database or storage degraded |
| Admin panel | /admin | HTTP | Admin UI broken (bad deploy) |
| GraphQL endpoint | /graphql | HTTP | API layer broken |
Step 3: Monitor the Directus admin panel separately
The /server/health endpoint confirms the API is up. The admin panel is a separate surface — a Next.js build that can break independently after a failed deploy or misconfigured reverse proxy.
Add a second HTTP monitor:
- URL:
https://your-directus.com/admin - Type: HTTP
- Expected status:
200
If your team relies on the Directus admin panel to manage content, catching admin UI failures separately is worth the extra monitor.
Step 4: Configure alert delivery
Set up where Vigilmon sends alerts when Directus goes down.
Slack:
- Create an incoming webhook in your Slack workspace
- In Vigilmon: Notifications → New Channel → Slack
- Paste your webhook URL and enable it on the Directus monitors
Email:
- In Vigilmon: Notifications → New Channel → Email
- Add your address or your whole team's
When Directus goes down, you'll receive:
🔴 DOWN: your-directus.com/server/health
Status: Connection refused
Regions: US-East, EU-West, AP-Southeast
Started: 3 minutes ago
And when it recovers:
✅ RECOVERED: your-directus.com/server/health is back UP
Total downtime: 8 minutes
Step 5: Docker health check for self-hosted Directus
Most self-hosted Directus deployments run in Docker. Add a container-level health check so failed containers are restarted automatically:
# docker-compose.yml
services:
directus:
image: directus/directus:latest
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8055/server/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
restart: unless-stopped
environment:
KEY: "your-secret-key"
SECRET: "your-secret-secret"
DB_CLIENT: "pg"
DB_HOST: "db"
# ...
This gives you two layers of protection:
- Docker restarts the container if it becomes unhealthy
- Vigilmon alerts you if the entire host is unreachable or the restart loop isn't resolving the issue
Step 6: Create a public status page
If external developers or clients consume your Directus API, give them visibility into uptime:
- Status Pages → New Status Page in Vigilmon
- Name it (e.g. "Data API Status")
- Add your Directus health monitors
- Save and share the public URL
Add the status page link to your API documentation or developer portal so consumers can self-serve during incidents rather than filing support tickets.
What you've built
| What | How |
|---|---|
| Health endpoint | /server/health — built-in, no code needed |
| Database + storage check | Included in /server/health JSON response |
| External uptime monitoring | Vigilmon HTTP monitor (multi-region) |
| Body assertion | Vigilmon keyword monitor on "status":"ok" |
| Admin UI monitoring | Separate HTTP monitor on /admin |
| Instant alerts | Slack/email on down + recovery |
| Container health | Docker Compose healthcheck directive |
Your Directus instance is now externally visible. The next time the Node.js process crashes, the database connection fails, or a bad deploy takes the admin panel offline, you'll know about it in under five minutes.
Get started free at vigilmon.online — your first monitor is running in under a minute.