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 Monitor → HTTP / 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 Monitor → HTTP / 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 Monitor → Cron 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 →