tutorial

SearXNG Monitoring with Vigilmon: Uptime, Health Checks & Search Availability Alerts

Monitor your self-hosted SearXNG metasearch engine with Vigilmon — track the health check endpoint, web UI availability, search response time, SSL certificate expiry, and instance availability.

You switched to SearXNG for private, untracked web search. But your self-hosted instance silently crashed three days ago, and you've been unknowingly sending queries to public instances — the opposite of what you wanted. For privacy-focused tools, an unreachable instance is a privacy failure.

Vigilmon provides the external uptime monitoring that catches SearXNG failures before your users are redirected elsewhere — watching the health endpoint, web UI, search response time, and SSL certificate. This tutorial walks you through complete SearXNG monitoring with Vigilmon.

What You'll Build

  • A Vigilmon HTTP monitor on SearXNG's /healthz endpoint
  • A web UI availability monitor with keyword verification
  • A search response time monitor with performance alerting
  • SSL certificate expiry alerts
  • Alert channels for immediate notification

Prerequisites

  • A running SearXNG instance (typically on port 8080, behind a reverse proxy)
  • A free account at vigilmon.online

Step 1: Monitor the /healthz Endpoint

SearXNG exposes a lightweight health check endpoint at /healthz. It returns OK with a 200 status code when the application is running and ready to serve requests.

Test it from your terminal:

curl https://search.yourdomain.com/healthz

Expected response:

OK

This endpoint confirms the SearXNG Python/Flask application is running, the worker processes are alive, and the HTTP stack is accepting connections. A process crash, a failed uWSGI worker, or a broken Python dependency will prevent this endpoint from responding.

Set up the Vigilmon monitor:

  1. Log in to Vigilmon and click New Monitor → HTTP.
  2. Set URL to https://search.yourdomain.com/healthz.
  3. Set Check interval to 60 seconds.
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check, add:
    • Keyword present: OK
  6. Save the monitor.

Vigilmon now polls your SearXNG health endpoint every minute from multiple geographic regions.


Step 2: Monitor Web UI Availability

The /healthz endpoint confirms the application process is alive, but doesn't verify the SearXNG search interface is rendering for users. A broken template, a misconfigured static file path, or a Jinja2 rendering error can leave the backend process running while the UI returns a 500 error.

Add a keyword monitor on the web UI:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://search.yourdomain.com/ (your SearXNG homepage).
  3. Set Expected status code to 200.
  4. Under Advanced → Keyword check, configure:
    • Keyword present: SearXNG
  5. Save.

The SearXNG homepage includes the application name in its HTML title and navigation. If template rendering fails or static files are missing, this check fails independently of the /healthz monitor — helping you distinguish process failures from rendering failures.


Step 3: Monitor Search Response Time

SearXNG aggregates results from multiple upstream search engines simultaneously. Response times vary by configured engines — but a degraded instance with too many slow or broken upstream engines will serve noticeably slower results, often as a prelude to timeout failures.

Monitor search endpoint response time:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to https://search.yourdomain.com/search?q=test&format=json.
  3. Set Check interval to 5 minutes (avoid hammering upstream engines too frequently).
  4. Set Expected status code to 200.
  5. Under Advanced → Response Time, set:
    • Alert threshold: 8000 ms (8 seconds — SearXNG typically responds in 2-5s when healthy)
  6. Under Advanced → Keyword check:
    • Keyword present: results
  7. Save.

This monitor catches both complete failures (no response) and degraded performance (slow or empty results). The format=json parameter returns machine-readable output that Vigilmon can inspect for the results key.


Step 4: Monitor Instance Availability for Users

If you're running a public or team-shared SearXNG instance, you want to know the moment it becomes unreachable from outside your network — not just when the health check fails internally. Configure a Vigilmon monitor from a different geographic region than your server:

  1. Open your /healthz monitor settings.
  2. Go to Advanced → Monitoring Regions.
  3. Enable regions geographically distant from your server (e.g., if your server is in Europe, enable US-East and Asia-Pacific probes).
  4. Set Alert when N of M regions fail to 1 of 3 for maximum sensitivity.
  5. Save.

When a regional network issue or firewall change makes your instance unreachable from a specific geography, Vigilmon alerts you based on probe failures — not just global outages.


Step 5: SSL Certificate Monitoring

SearXNG served over HTTPS via Nginx, Caddy, or Traefik: an expired TLS certificate will block every user with a browser certificate error. For an instance meant to replace commercial search engines, this is a complete service failure.

Vigilmon automatically monitors SSL certificate validity on HTTPS monitors. Configure dedicated expiry alerts:

  1. Open any of your HTTPS SearXNG monitors in Vigilmon.
  2. Go to Settings → SSL.
  3. Enable Alert when certificate expires within 14 days.
  4. Optionally enable Alert when certificate expires within 30 days for early warning.

You'll receive alerts like:

⚠️  SSL Warning: search.yourdomain.com
Certificate expires in 6 days (2026-07-15)

Step 6: Alert Channels

Go to Notifications → New Channel in Vigilmon and configure your preferred alert delivery:

  • Email — immediate alerts to your inbox
  • Webhook — forward to Matrix, Discord, or ntfy.sh for push notifications

A SearXNG downtime alert looks like:

🔴 DOWN: search.yourdomain.com/healthz (HTTP 502)
SearXNG health check failed
Region: EU-West
Triggered: 2026-01-15 11:05 UTC

Recovery notification:

✅ RECOVERED: search.yourdomain.com/healthz
Downtime: 3 minutes

What You've Built

| Scenario | How Vigilmon catches it | |---|---| | SearXNG process crash or worker failure | /healthz returns non-200 or connection refused | | Template/rendering error | Web UI keyword monitor fails while /healthz stays green | | Slow upstream search engines degrading results | Search response time threshold alert fires | | Regional network or firewall issue | Multi-region probe detects geography-specific outage | | Reverse proxy misconfiguration | HTTPS monitor detects 502 or TLS error | | SSL certificate expired or expiring | SSL expiry alert triggers at threshold |


Self-hosting SearXNG protects your search privacy. Vigilmon makes sure that protection stays online. Monitor from outside your network, from multiple regions, with no agents to install.

Start monitoring SearXNG today — 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 →