tutorial

Monitoring SABnzbd with Vigilmon

SABnzbd handles the full Usenet download pipeline — here's how to monitor its web UI, REST API, Usenet server connectivity, and post-processing health with Vigilmon so you catch failures before they pile up in your download queue.

SABnzbd is the most popular open-source Usenet downloader, handling the full NZB pipeline: NNTP server connections, article downloading, par2 repair, and unrar extraction. When SABnzbd fails silently — a Python crash, a lost Usenet server connection, or a post-processing error — the NZBs queued by Sonarr and Radarr just sit there indefinitely. Vigilmon gives you web UI uptime checks, API health probes, server connectivity monitoring, and a post-processing health heartbeat to catch every failure mode in the Usenet download pipeline.

What You'll Set Up

  • HTTP monitor for the SABnzbd web UI (port 8080)
  • API health check via the unauthenticated version endpoint
  • Usenet server connectivity monitoring via the queue status endpoint
  • SSL certificate expiry alerts for HTTPS SABnzbd deployments
  • Heartbeat monitor for post-processing success rate

Prerequisites

  • SABnzbd installed and accessible on port 8080 (or your configured port)
  • SABnzbd API key (found in Config → General → API Key)
  • At least one Usenet server configured in Config → Servers
  • A free Vigilmon account

Step 1: Monitor the SABnzbd Web UI

SABnzbd serves its web interface from a built-in CherryPy HTTP server. A GET / returning HTTP 200 confirms the Python server process is running and the web interface is reachable.

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your SABnzbd URL: http://your-server:8080/
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Under Keyword check, enter SABnzbd to confirm you're receiving the SABnzbd interface, not a fallback page.
  7. Click Save.

This catches the SABnzbd Python process crashing, CherryPy running out of threads under heavy extraction load, or the port becoming unreachable.


Step 2: Monitor the SABnzbd API Health

SABnzbd provides a comprehensive REST API at /api. The version mode returns the SABnzbd version number without requiring an API key — making it an ideal lightweight liveness probe:

GET http://your-server:8080/api?mode=version&output=json

Expected response:

{"version": "4.3.3"}

Add this monitor in Vigilmon:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-server:8080/api?mode=version&output=json
  3. Expected status: 200.
  4. Keyword check: version — confirms a valid JSON response with the version field.
  5. Check interval: 2 minutes.
  6. Click Save.

For a deeper API check that also validates the API key and confirms database access, use the queue endpoint:

GET http://your-server:8080/api?mode=queue&output=json&apikey=YOUR_API_KEY

This returns the full download queue with status, current speed, remaining size, and ETA. Add it as a second monitor with keyword check status to confirm the API key is valid and the queue database is accessible.


Step 3: Monitor Usenet Server Connectivity

SABnzbd downloads articles from NNTP (Usenet) servers. If your Usenet provider connection drops — authentication error, bandwidth quota exhausted, or DNS failure — SABnzbd transitions to an error state and stops downloading without any external indication.

Monitor the queue status to detect server connectivity failures:

GET http://your-server:8080/api?mode=queue&output=json&apikey=YOUR_API_KEY

The response status field indicates the current state:

  • "Downloading" — connected and downloading normally
  • "Idle" — no downloads queued, server connections are healthy
  • "No Usenet server defined" — all servers removed or disabled
  • "Quota Exceeded" — monthly download quota reached (if your provider enforces limits)

Add this monitor:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: http://your-server:8080/api?mode=queue&output=json&apikey=YOUR_API_KEY
  3. Expected status: 200.
  4. Keyword check: status — confirms valid JSON with a status field.
  5. Check interval: 5 minutes.
  6. Click Save.

For a stricter check during active download periods, configure a keyword check for "Downloading" to alert if SABnzbd transitions out of the downloading state unexpectedly.


Step 4: SSL Certificate Alerts for HTTPS SABnzbd Deployments

SABnzbd supports native HTTPS via the built-in CherryPy server, but most production deployments run it behind a reverse proxy (nginx, Caddy) for SSL termination and additional security headers. Either way, monitor the certificate to prevent unexpected expiry.

Enable SSL monitoring on your HTTPS monitor:

  1. Open the HTTPS monitor for https://sabnzbd.yourdomain.com/.
  2. Enable Monitor SSL certificate.
  3. Set Alert when certificate expires in less than 21 days.
  4. Click Save.

If you use SABnzbd's native HTTPS (configured in Config → General → HTTPS Port), ensure the certificate and key paths are set correctly:

Config → General → HTTPS Certificate: /path/to/fullchain.pem
Config → General → HTTPS Key: /path/to/privkey.pem

If you use nginx as a reverse proxy:

server {
    listen 443 ssl;
    server_name sabnzbd.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/sabnzbd.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sabnzbd.yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

Step 5: Heartbeat Monitoring for Post-Processing Health

SABnzbd's post-processing pipeline — par2 repair and unrar extraction — can fail silently. A high rate of Failed items in the download history indicates corrupted Usenet articles, par2 repair failures, or a missing unrar binary. A scheduled heartbeat that inspects the recent history detects this degraded state before your media library fills with incomplete downloads.

  1. In Vigilmon, click Add MonitorCron Heartbeat.
  2. Set Expected ping interval to 30 minutes.
  3. Copy the heartbeat URL (e.g. https://vigilmon.online/heartbeat/abc123).
  4. Add a cron job on your SABnzbd server:
crontab -e
*/30 * * * * HISTORY=$(curl -s \
  "http://localhost:8080/api?mode=history&limit=5&output=json&apikey=YOUR_API_KEY") && \
  FAILED=$(echo "$HISTORY" | python3 -c \
  "import sys,json; h=json.load(sys.stdin)['history']['slots']; \
   print(sum(1 for s in h if s.get('status')=='Failed'))") && \
  [ "$FAILED" -lt 3 ] && \
  curl -s https://vigilmon.online/heartbeat/abc123

This script:

  1. Fetches the 5 most recent completed downloads from the SABnzbd history API
  2. Counts entries with status Failed
  3. Only pings the Vigilmon heartbeat if fewer than 3 of the last 5 downloads failed

If SABnzbd is down, the API call fails and the heartbeat stops — Vigilmon alerts after 30 minutes. If post-processing is consistently failing (par2 errors, missing unrar), the failure count exceeds the threshold and the heartbeat also stops.

Check for unrar availability on your SABnzbd host:

which unrar || apt-get install unrar

Step 6: Configure Alert Channels

  1. Go to Alert Channels in Vigilmon and add email, Slack, or a webhook.
  2. Set Consecutive failures before alert to 2 on the web UI and version API monitors.
  3. Set Consecutive failures to 1 on the queue status monitor — a Usenet server connectivity failure means the download queue is stalled right now.

Summary

| Monitor | URL / Check | What It Catches | |---|---|---| | Web UI | http://your-server:8080/ | CherryPy crash, process OOM | | API version | /api?mode=version | API layer failure, Python errors | | Queue status | /api?mode=queue | Usenet server down, quota exceeded | | SSL certificate | Your domain | Certificate expiry, Let's Encrypt failure | | Cron heartbeat | History API (last 5) | Post-processing failures, missing unrar, par2 errors |

SABnzbd sits at the center of the Usenet media automation stack — a silent failure stops Sonarr and Radarr from completing their downloads without any obvious error. With Vigilmon monitoring the CherryPy web server, REST API, Usenet server connectivity, SSL certificate, and post-processing health, you have full visibility into every layer of the pipeline.

Monitor your app with Vigilmon

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

Start free →