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
/healthzendpoint - 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:
- Log in to Vigilmon and click New Monitor → HTTP.
- Set URL to
https://search.yourdomain.com/healthz. - Set Check interval to 60 seconds.
- Set Expected status code to
200. - Under Advanced → Keyword check, add:
- Keyword present:
OK
- Keyword present:
- 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:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://search.yourdomain.com/(your SearXNG homepage). - Set Expected status code to
200. - Under Advanced → Keyword check, configure:
- Keyword present:
SearXNG
- Keyword present:
- 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:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://search.yourdomain.com/search?q=test&format=json. - Set Check interval to 5 minutes (avoid hammering upstream engines too frequently).
- Set Expected status code to
200. - Under Advanced → Response Time, set:
- Alert threshold:
8000 ms(8 seconds — SearXNG typically responds in 2-5s when healthy)
- Alert threshold:
- Under Advanced → Keyword check:
- Keyword present:
results
- Keyword present:
- 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:
- Open your
/healthzmonitor settings. - Go to Advanced → Monitoring Regions.
- Enable regions geographically distant from your server (e.g., if your server is in Europe, enable US-East and Asia-Pacific probes).
- Set Alert when N of M regions fail to
1 of 3for maximum sensitivity. - 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:
- Open any of your HTTPS SearXNG monitors in Vigilmon.
- Go to Settings → SSL.
- Enable Alert when certificate expires within 14 days.
- 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.