Redash lets data teams write SQL and build dashboards without a data engineering team standing in the way. But Redash's architecture — a Flask web process, Celery workers, and a Redis queue — means there are multiple independent components that can fail while others keep running. A crashed Celery worker silently stops refreshing query results while the web dashboard looks perfectly healthy. Vigilmon monitors every Redash layer: the ping endpoint, dashboard UI, worker health API, and SSL certificates, so stale data gets caught before it ships to a stakeholder.
What You'll Set Up
- HTTP monitor for the
/pingliveness endpoint - Web dashboard availability check
- Worker health monitoring via
/status.json - SSL certificate expiry alerts
- Heartbeat check for scheduled query refreshes
Prerequisites
- Redash 10+ running (Docker Compose recommended)
- A free Vigilmon account
Step 1: Monitor the /ping Endpoint
Redash exposes /ping as a minimal liveness probe. It returns pong when the Flask web process is alive and accepting connections — no database or worker dependency.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter the URL:
https://redash.yourdomain.com/ping - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Under Response body, set Contains to
pong. - Click Save.
This catches the web process being down. It does not catch worker failures — that requires the next two steps.
Step 2: Monitor the Web Dashboard
The /ping endpoint is a raw liveness check, not a user experience check. Monitor the actual dashboard page to catch proxy misconfigurations or authentication middleware errors.
- Click Add Monitor → HTTP / HTTPS.
- Enter:
https://redash.yourdomain.com/ - Set Expected HTTP status to
200. - Set Check interval to
2 minutes. - Under Response body, set Contains to
Redash. - Click Save.
Step 3: Worker Health via /status.json
Redash exposes /status.json (admin authentication required in newer versions) with Celery worker counts, queue depths, and Redis connection status. This is the single endpoint that tells you whether background query execution is actually working.
For self-hosted Redash instances where you control network access, set up a Vigilmon monitor with your admin credentials:
- Click Add Monitor → HTTP / HTTPS.
- Enter:
https://redash.yourdomain.com/status.json - Set Expected HTTP status to
200. - Under Request headers, add:
Cookie: session=<your-admin-session-cookie> - Under Response body, set Contains to
"workers"to verify the worker section is present. - Set Check interval to
2 minutes. - Click Save.
A healthy /status.json response includes:
{
"workers": ["celery@worker1"],
"redis_status": "healthy",
"database_status": "healthy",
"queues": {"queries": {"size": 0}, "scheduled_queries": {"size": 0}}
}
If workers is an empty array, Celery is down and scheduled queries are not running. Vigilmon will alert when the response body no longer contains "workers" with actual entries.
Alternatively, expose a lightweight internal health proxy on a non-authenticated port within your private network and point Vigilmon at that.
Step 4: SSL Certificate Alerts
Redash dashboards are often embedded in internal tools and shared via public URLs — a certificate expiry breaks access for everyone.
- Open the HTTP monitor created in Step 1.
- Enable Monitor SSL certificate under the SSL section.
- Set Alert when certificate expires in less than
21 days. - Click Save.
If Redash is served on multiple subdomains (e.g. redash.internal.com and a public alias), add a monitor for each hostname.
Step 5: Heartbeat Monitoring for Scheduled Query Refreshes
Redash's scheduled queries refresh on a set interval — every hour, every day, etc. If Celery workers are down or Redis queue depth spikes, scheduled refreshes silently stop. Downstream dashboards show stale data with no warning.
Add a heartbeat that pings Vigilmon after each successful scheduled query run:
- In Vigilmon, click Add Monitor → Cron Heartbeat.
- Set the expected interval to match your most critical scheduled query (e.g.
60minutes for an hourly revenue report). - Copy the heartbeat URL:
https://vigilmon.online/heartbeat/abc123
In Redash, add a post-execution script using a Redash query that runs via the API and sends the heartbeat on success:
#!/bin/bash
# Trigger a specific Redash query and ping Vigilmon on success
QUERY_ID=42
RESULT=$(curl -s \
-H "Authorization: Key $REDASH_API_KEY" \
"https://redash.yourdomain.com/api/queries/$QUERY_ID/results" \
-d '{}' \
-X POST)
if echo "$RESULT" | grep -q '"status":"done"'; then
curl -s https://vigilmon.online/heartbeat/abc123
fi
Schedule this script as a system cron job matching the Redash query's refresh interval. If workers hang and the query never completes, the heartbeat never pings, and Vigilmon alerts.
Step 6: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- On the
/pingmonitor, set Consecutive failures to2— Docker container restarts can cause brief gaps. - On the
/status.jsonworker monitor, set Consecutive failures to1— a missing worker is immediately impactful. - Consider setting up a dedicated #data-ops Slack channel for Redash alerts, separate from general infrastructure alerts.
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| Ping liveness | /ping | Web process crash |
| Dashboard UI | / | Proxy failure, frontend errors |
| Worker health | /status.json | Celery worker down, Redis disconnect |
| SSL certificate | Each Redash hostname | Certificate expiry |
| Cron heartbeat | Heartbeat URL | Scheduled query staleness, worker hang |
Redash's multi-process architecture means a partial failure is the most common failure mode — the web UI stays green while workers silently stop processing. Vigilmon's layered checks catch both surfaces, keeping your data team confident that scheduled refreshes are running and dashboards are showing current data.