tutorial

Monitoring Your Directus Instance with Vigilmon (Free, Multi-Region)

Directus powers your entire data platform — when it goes down, every app consuming your REST or GraphQL API breaks at once. Learn how to add health checks, set up external uptime monitoring, and get alerted before your users notice.

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:

  1. Sign up at vigilmon.online — free tier, no credit card
  2. Click New Monitor → HTTP
  3. Enter https://your-directus.com/server/health
  4. Set the check interval (5 minutes on the free tier)
  5. 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:

  1. New Monitor → Keyword
  2. URL: https://your-directus.com/server/health
  3. Keyword: "status":"ok"
  4. 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:

  1. Create an incoming webhook in your Slack workspace
  2. In Vigilmon: Notifications → New Channel → Slack
  3. Paste your webhook URL and enable it on the Directus monitors

Email:

  1. In Vigilmon: Notifications → New Channel → Email
  2. 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:

  1. Status Pages → New Status Page in Vigilmon
  2. Name it (e.g. "Data API Status")
  3. Add your Directus health monitors
  4. 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.

Monitor your app with Vigilmon

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

Start free →