tutorial

Monitoring Plausible Analytics with Vigilmon: Health Endpoints, Event Ingestion & SSL Certificate Alerts

How to monitor self-hosted Plausible Analytics with Vigilmon — health endpoint, dashboard availability, event ingestion endpoint, SSL certificate monitoring, and alerting for your privacy-focused web analytics platform.

Plausible Analytics is the leading privacy-focused, self-hosted alternative to Google Analytics — used by teams that want web analytics without tracking cookies or GDPR complexity. When your Plausible instance goes down, you lose visibility into your site's traffic in real time, and event tracking scripts on your websites start silently dropping analytics data. A failed event ingestion endpoint means analytics data is lost permanently — there's no replay. Vigilmon gives you external visibility into Plausible's health: the health endpoint, dashboard availability, event ingestion, and SSL certificates — so you catch outages before data loss compounds.

What You'll Build

  • A monitor on Plausible's /api/health endpoint
  • A dashboard availability monitor for the Plausible UI
  • An event ingestion endpoint check
  • SSL certificate monitoring for your Plausible domain
  • Alerting that distinguishes process failures from ingestion failures

Prerequisites

  • A running self-hosted Plausible Analytics instance with HTTPS access
  • Plausible accessible at a public or network-reachable URL (e.g., https://plausible.example.com)
  • A free account at vigilmon.online

Step 1: Verify Plausible's Health Endpoint

Plausible exposes a health endpoint that returns its status:

# Health check
curl https://plausible.example.com/api/health

# Dashboard availability
curl -I https://plausible.example.com

# Event ingestion endpoint (POST-only; GET returns 400 — we check for 400 as a sign it's reachable)
curl -I https://plausible.example.com/api/event

A healthy Plausible instance returns {"postgres":"ok","clickhouse":"ok"} or similar JSON from /api/health with HTTP 200. The event ingestion endpoint at /api/event only accepts POST requests — a GET probe returns 400 Bad Request, which still confirms the endpoint is up and accepting connections.


Step 2: Create a Vigilmon Monitor for the Health Endpoint

  1. Log in to VigilmonAdd Monitor → HTTP.
  2. URL: https://plausible.example.com/api/health.
  3. Check interval: 60 seconds.
  4. Response timeout: 10 seconds.
  5. Expected status: 200.
  6. Keyword: ok (present in both "postgres":"ok" and "clickhouse":"ok" when healthy).
  7. Label: Plausible Health.
  8. Click Save.

The keyword check catches degraded state — if Postgres or ClickHouse is unhealthy, the response body will not contain ok for both services even if the HTTP status is still 200.


Step 3: Monitor Dashboard Availability

The Plausible dashboard is what your team uses to view analytics. Monitor the root URL to catch web server or reverse proxy failures:

  1. Add Monitor → HTTP.
  2. URL: https://plausible.example.com.
  3. Check interval: 5 minutes.
  4. Response timeout: 15 seconds.
  5. Expected status: 200.
  6. Label: Plausible Dashboard.
  7. Click Save.

If this monitor fires while the health endpoint is healthy, the web layer (Phoenix/Elixir app or reverse proxy) has failed while the database backends are still reachable.


Step 4: Monitor the Event Ingestion Endpoint

The event ingestion endpoint (/api/event) is the most critical component of Plausible — it receives pageview and custom event data from your websites. When it fails, analytics data is dropped permanently:

  1. Add Monitor → HTTP.
  2. URL: https://plausible.example.com/api/event.
  3. Check interval: 60 seconds.
  4. Response timeout: 10 seconds.
  5. Expected status: 400 (a GET probe to a POST-only endpoint returns 400 on a healthy Plausible; 502 or 000 means the endpoint is down).
  6. Label: Plausible Event Ingestion.
  7. Click Save.

Monitoring for 400 rather than 200 is intentional: the ingestion endpoint only accepts POST with the correct payload. A 400 response from a GET probe confirms the endpoint is alive and responding — it's rejecting the probe because it's a GET, not because the service is broken. A 502, 504, or connection timeout means the endpoint is down and events from your tracked sites are being lost.


Step 5: Monitor SSL Certificates

Plausible's tracking script is loaded over HTTPS from your domain. An expired certificate causes the script to fail to load — analytics stops being collected silently across all sites that use your Plausible instance:

  1. Add Monitor → SSL Certificate.
  2. Domain: plausible.example.com.
  3. Alert when expiry is within: 30 days.
  4. Alert again: 14 days, 7 days, 3 days, 1 day.
  5. Click Save.

SSL expiry is particularly damaging for Plausible because the impact is silent — browsers block the script load without any server-side error, so no logs or alerts fire on the Plausible side.


Step 6: Configure Alerting

In Vigilmon under Settings → Notifications, configure your alert channels:

| Monitor | Trigger | Action | |---|---|---| | Health endpoint (/api/health) | Non-200 or keyword missing | Plausible or its databases unhealthy; check Postgres and ClickHouse | | Dashboard (root URL) | Non-200 | Web layer or reverse proxy failed; check Phoenix app and nginx | | Event ingestion (/api/event) | Non-400 (or connection fail) | Events being dropped from all tracked sites; critical | | SSL certificate | < 30 days to expiry | Renew certificate; check Let's Encrypt auto-renewal |

Alert after: 1 consecutive failure for the health and event ingestion monitors — event data loss is immediate and permanent. 2 failures for the dashboard to avoid false positives during restarts.


Common Plausible Failure Modes and What Vigilmon Catches

| Scenario | Vigilmon monitor | |---|---| | Plausible process crash / OOM | Health endpoint unreachable; alert within 60 s | | PostgreSQL unreachable | Health keyword check fires ("postgres":"ok" missing) | | ClickHouse unreachable | Health keyword check fires ("clickhouse":"ok" missing) | | ClickHouse disk full | Health check may degrade; event writes fail silently | | Reverse proxy (nginx/Caddy) crash | Dashboard monitor fires; health endpoint may still pass | | Let's Encrypt renewal failure | SSL monitor alerts at 30-day threshold | | Event endpoint misconfigured or renamed | Ingestion monitor fires; no analytics collected | | High load causes timeout on event endpoint | Ingestion monitor times out |


Plausible's health endpoint makes database-layer monitoring straightforward, but the event ingestion check is uniquely important — unlike most services, Plausible failures cause permanent data loss rather than temporary unavailability. Vigilmon's layered monitoring of the health endpoint, dashboard, event ingestion, and SSL certificate gives you the external visibility you need to protect your analytics data and your team's access to traffic insights.

Start monitoring Plausible in under 5 minutes — register free at vigilmon.online.

Monitor your app with Vigilmon

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

Start free →