Jitsu is an open-source customer data platform that collects events from your websites and apps and routes them to data warehouses, analytics tools, and marketing platforms. When Jitsu's ingestion endpoint goes down, events are silently dropped — there's no database error, no user-visible crash, just a gap in your data that you discover weeks later when funnels don't add up. Vigilmon monitors Jitsu's health API, event ingestion endpoint, destination sync status, and SSL certificates so data loss gets caught in minutes, not months.
What You'll Set Up
- HTTP monitor for the
/api/v1/healthendpoint - Event ingestion API availability check
- Destination sync heartbeat monitoring
- SSL certificate expiry alerts
- Heartbeat monitoring for scheduled sync jobs
Prerequisites
- Jitsu 1.x or Jitsu 2.x (NextJS-based) running self-hosted
- A free Vigilmon account
Step 1: Monitor the /api/v1/health Endpoint
Jitsu exposes /api/v1/health as a liveness check that verifies the server is up and the database connection is healthy.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter the URL:
https://jitsu.yourdomain.com/api/v1/health - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Under Response body, set Contains to
"status":"ok". - Click Save.
A healthy Jitsu instance returns:
{"status": "ok"}
This check catches the Jitsu server process being down, the database being unreachable, or a misconfigured reverse proxy returning an error page instead of passing the request through.
Step 2: Monitor the Event Ingestion API
The health endpoint verifies the server process, but the actual event ingestion path has additional failure modes: authentication middleware errors, rate limiter misconfiguration, or a routing bug that drops specific event types.
Test the ingestion API with a synthetic event:
- Click Add Monitor → HTTP / HTTPS.
- Enter:
https://jitsu.yourdomain.com/api/v1/event?token=<your-write-key> - Set Method to
POST. - Set Request body to:
{"event_type": "vigilmon_health_check", "url": "https://vigilmon.online"} - Add Request header:
Content-Type: application/json - Set Expected HTTP status to
200. - Set Check interval to
5 minutes. - Click Save.
Jitsu accepts the synthetic event and queues it for destination routing. If the ingestion endpoint returns a non-200, Vigilmon alerts. Set up a destination filter in Jitsu to drop events with event_type = "vigilmon_health_check" so synthetic checks don't pollute your analytics.
For Jitsu 2.x, the event ingestion endpoint is:
POST https://jitsu.yourdomain.com/api/s/<stream-id>
Adjust the URL to match your Jitsu version and stream configuration.
Step 3: Monitor Destination Sync Status
Jitsu routes ingested events to destinations — BigQuery, Snowflake, PostgreSQL, Amplitude, etc. A destination connector that loses credentials or hits an API rate limit stops syncing without affecting the ingestion layer. Events accumulate in the queue and are eventually dropped.
Check destination sync health via the Jitsu API:
- Click Add Monitor → HTTP / HTTPS.
- Enter:
https://jitsu.yourdomain.com/api/v1/destinations - Set Expected HTTP status to
200. - Under Request headers, add:
Authorization: Bearer <your-api-key> - Under Response body, set Contains to
"status":"active"to verify at least one destination is active. - Set Check interval to
5 minutes. - Click Save.
For a more precise check targeting a specific destination, use the destination ID:
GET /api/v1/destinations/<destination-id>/status
A "status":"error" in the response means the destination connector is failing. Vigilmon catches the response body change and alerts your team before the event queue backs up.
Step 4: SSL Certificate Alerts
Jitsu's JavaScript snippet is loaded on your production website. If Jitsu's TLS certificate expires, browsers refuse to load the tracking script and event collection stops entirely — with no visible error to end users.
- 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 Jitsu is accessible on multiple domains (e.g. jitsu.yourdomain.com and a custom CNAME for the tracking pixel), add a monitor for each hostname.
Step 5: Heartbeat Monitoring for Scheduled Sync Jobs
Jitsu's bulk sync connectors (for pulling data from sources like Stripe, Salesforce, or Hubspot) run on a schedule. If the sync process hangs or the connector loses access, no error is surfaced — the destination just stops receiving new data.
Add a heartbeat that confirms syncs complete on schedule:
- In Vigilmon, click Add Monitor → Cron Heartbeat.
- Set the expected interval to match your most critical sync schedule (e.g.
60minutes for an hourly Stripe sync). - Copy the heartbeat URL:
https://vigilmon.online/heartbeat/abc123
In your Jitsu hosting environment, add a wrapper script that checks sync completion status via the Jitsu API and pings Vigilmon:
#!/bin/bash
# jitsu-sync-heartbeat.sh
SYNC_ID="stripe-to-bigquery"
STATUS=$(curl -s \
-H "Authorization: Bearer $JITSU_API_KEY" \
"https://jitsu.yourdomain.com/api/v1/sources/$SYNC_ID/last_run")
if echo "$STATUS" | grep -q '"status":"completed"'; then
curl -s https://vigilmon.online/heartbeat/abc123
fi
Schedule it as a cron job:
# /etc/cron.d/jitsu-sync-check
5 * * * * ubuntu /usr/local/bin/jitsu-sync-heartbeat.sh
The 5-minute offset from the top of the hour ensures the sync has had time to complete before the check runs. If the sync hangs or fails, the heartbeat doesn't ping and Vigilmon alerts after the window expires.
Step 6: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- On the health endpoint monitor, set Consecutive failures to
2— Docker restarts during upgrades can cause brief gaps. - On the event ingestion monitor, set Consecutive failures to
1— any ingestion failure means data loss is occurring right now. - On destination sync monitors, set Consecutive failures to
2— transient API errors self-resolve; sustained failures need investigation. - Route ingestion alerts to your data engineering on-call, not just a general Slack channel — silent data loss is a P1 incident.
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| Health endpoint | /api/v1/health | Server crash, database disconnect |
| Event ingestion | /api/v1/event | Ingestion pipeline failure, auth errors |
| Destination sync | /api/v1/destinations | Connector failure, credentials expiry |
| SSL certificate | Each Jitsu hostname | Certificate expiry, tracking script blocked |
| Cron heartbeat | Heartbeat URL | Sync job hang, missed schedule |
Data collection infrastructure is uniquely dangerous to leave unmonitored because failures are invisible — users keep using your product, events silently disappear, and the data gap is only discovered when someone runs an analysis weeks later. Vigilmon's continuous checks on Jitsu's ingestion and sync paths catch failures in minutes so your data pipelines stay complete and trustworthy.