tutorial

Monitoring ToolJet with Vigilmon

ToolJet is a self-hosted low-code platform that your team uses to build internal tools. Here's how to monitor its web UI, /api/health endpoint, app builder service, database connection, and SSL certificates with Vigilmon.

ToolJet is an open-source, self-hosted low-code platform for building internal tools — admin panels, dashboards, and CRUD apps — without writing a full backend. When teams adopt ToolJet for internal operations, it quickly becomes critical infrastructure: the order management dashboard, the customer support tool, the inventory tracker all run on it. If ToolJet goes down, internal workflows stop. Vigilmon gives you uptime monitoring, API health checks, and SSL certificate alerts so you know immediately when ToolJet needs attention.

What You'll Set Up

  • HTTP uptime monitor for the ToolJet web UI
  • /api/health endpoint check for deep backend health
  • App builder service availability check
  • Database connection health verification
  • SSL certificate expiry alerts

Prerequisites

  • ToolJet deployed with Docker Compose or Kubernetes
  • ToolJet accessible over HTTPS on a domain
  • A free Vigilmon account

Step 1: Monitor the ToolJet Web UI

The ToolJet dashboard is where your team builds and runs internal tools. An HTTP monitor catches nginx failures, container crashes, and load balancer issues:

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

A 1-minute check interval means you'll know within 60 seconds if the ToolJet dashboard becomes unreachable — critical when teams are actively using it during business hours.


Step 2: Check the /api/health Endpoint

ToolJet exposes a /api/health endpoint that checks the application server and its dependencies. This is more reliable than the UI check because it bypasses frontend caching and static asset serving:

  1. In Vigilmon, click Add MonitorHTTP / HTTPS.
  2. Set the URL to https://tooljet.yourdomain.com/api/health.
  3. Set Expected HTTP status to 200.
  4. Optionally, set Expected response body contains to "works":true to verify the response content.
  5. Set Check interval to 1 minute.
  6. Click Save.

Verify the endpoint manually:

curl -s https://tooljet.yourdomain.com/api/health
# → {"works":true}

If this returns anything other than {"works":true}, ToolJet's Node.js backend is unhealthy — the frontend may still load from cache while the API is down, making this check essential for catching partial failures.


Step 3: Monitor the App Builder Service

ToolJet's app builder is a distinct interface from the app runner. Verify it's accessible by checking the builder route:

  1. In Vigilmon, click Add MonitorHTTP / HTTPS.
  2. Set the URL to https://tooljet.yourdomain.com/login.
  3. Set Expected HTTP status to 200.
  4. Set Check interval to 5 minutes.
  5. Click Save.

The login page loads the React app bundle that includes the app builder. If this returns a 502 or 404, the SPA assets aren't being served correctly — which means users can't access any ToolJet apps, even if the API backend is up.

To check the app builder more thoroughly, verify the API route that the builder uses to list apps:

curl -s -I https://tooljet.yourdomain.com/api/apps
# → HTTP/2 401 (unauthenticated request correctly rejected)

A 401 response confirms the apps API is live and enforcing authentication.


Step 4: Verify Database Connection Health

ToolJet stores app definitions, users, and configurations in PostgreSQL. A database connectivity problem breaks everything — no apps load, no data sources connect. Monitor database health indirectly through ToolJet's health endpoint:

The /api/health endpoint (Step 2) already checks the database connection. But you can add an additional layer by monitoring ToolJet's database migration endpoint at startup. For a more direct approach, use a TCP port monitor on your PostgreSQL instance if it's hosted separately:

  1. In Vigilmon, click Add MonitorTCP Port.
  2. Set the Host to your PostgreSQL host (e.g. db.yourdomain.com or the internal Docker network hostname).
  3. Set the Port to 5432.
  4. Set Check interval to 5 minutes.
  5. Click Save.

If you run PostgreSQL on the same Docker network as ToolJet and it's not externally accessible, use a cron heartbeat instead:

#!/bin/bash
# Run on the ToolJet host
pg_isready -h localhost -p 5432 -U tooljet && \
  curl -s https://vigilmon.online/heartbeat/your-token

Add to cron:

*/5 * * * * /usr/local/bin/tooljet-db-check.sh

This pings Vigilmon only when PostgreSQL responds to connection checks — if the DB goes down, the heartbeat stops.


Step 5: SSL Certificate Alerts

ToolJet handles internal company data and potentially connects to production databases. It must always run over HTTPS. A lapsed certificate locks your entire team out of their internal tools:

  1. Open the HTTP / HTTPS monitor for https://tooljet.yourdomain.com (created in Step 1).
  2. Enable Monitor SSL certificate under the SSL section.
  3. Set Alert when certificate expires in less than 21 days.
  4. Click Save.

ToolJet deployments often use Nginx or Caddy as a reverse proxy for TLS termination. If you use Caddy, automatic certificate renewal is built in — but Vigilmon's 21-day warning catches the edge cases where Caddy's ACME renewal fails silently due to DNS misconfiguration or rate limits.


Step 6: Configure Alert Channels

  1. Go to Alert Channels in Vigilmon and add Slack, email, or PagerDuty.
  2. For a production internal tools platform, PagerDuty or Slack is appropriate — ToolJet outages directly block team workflows, so alerts need immediate visibility.
  3. Set Consecutive failures before alert to 2 to absorb brief container restarts during ToolJet updates.
  4. Create a dedicated #tooljet-alerts Slack channel and route ToolJet monitors there separately from other infrastructure alerts.

For organizations with SLAs on internal tools, configure escalation policies: a 2-failure threshold triggers Slack, and a 10-minute sustained outage escalates to PagerDuty on-call.


Step 7: Maintenance Windows for ToolJet Updates

ToolJet releases frequent updates and database migrations can cause brief downtime. Suppress false alerts during planned updates:

# Before running ToolJet update
curl -X POST https://vigilmon.online/api/maintenance \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"monitor_id": "your-monitor-id", "duration_minutes": 15}'

# Run your ToolJet update
docker-compose pull && docker-compose up -d

# Vigilmon resumes monitoring after 15 minutes automatically

ToolJet migrations can take several minutes on large datasets. A 15-minute maintenance window is usually sufficient for routine updates.


Summary

| Monitor | Target | What It Catches | |---|---|---| | Web UI | https://tooljet.yourdomain.com | Frontend unavailable | | Health API | /api/health (expect {"works":true}) | Backend / DB failure | | Login page | /login (expect 200) | SPA assets not served | | Apps API | /api/apps (expect 401) | Application layer error | | Database | TCP port 5432 or heartbeat | PostgreSQL down | | SSL certificate | Your ToolJet domain | Certificate expiry |

ToolJet becomes core infrastructure quickly — the moment your team builds their first operational tool on it, a ToolJet outage becomes a business disruption. With Vigilmon checking every layer from the UI to the database connection, you get the visibility you need to catch problems before they interrupt your team's work.

Monitor your app with Vigilmon

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

Start free →