tutorial

Syncthing Monitoring with Vigilmon: REST API, Sync Health & Disk Space Alerts

Monitor your self-hosted Syncthing file sync node with Vigilmon — track the REST API ping endpoint, web UI availability, sync completion status, SSL certificate expiry, and disk space via heartbeat.

Your Syncthing node is mid-sync when the disk fills up. The service pauses, files stop propagating between devices, and the web UI shows a warning — but no alert reaches you. By the time you notice, your photos from last week's trip haven't synced to your backup node. For peer-to-peer file sync, silent failures are the most dangerous kind.

Syncthing is an open-source, decentralized file synchronization tool that keeps your files in sync across multiple devices without a central cloud. Vigilmon provides external monitoring that catches Syncthing failures at the REST API, web interface, and sync status level — before a disk full or service crash causes data divergence between your nodes.

This tutorial walks you through monitoring Syncthing end-to-end with Vigilmon.

What You'll Build

  • A Vigilmon HTTP monitor on Syncthing's /rest/system/ping endpoint
  • A web UI availability monitor with keyword verification
  • A sync folder health check via the REST API
  • SSL certificate expiry alerts
  • Disk space monitoring via Vigilmon heartbeat

Prerequisites

  • A running Syncthing instance (GUI typically on port 8384)
  • A free account at vigilmon.online

Step 1: Monitor the REST API Ping Endpoint

Syncthing exposes a REST API health endpoint at /rest/system/ping. It returns {"ping": "pong"} when the Syncthing process is operational.

Test it from your terminal:

curl http://localhost:8384/rest/system/ping \
  -H "X-API-Key: YOUR_API_KEY"

Expected response:

{"ping": "pong"}

To find your API key: open the Syncthing web UI → Actions → Settings → API Key.

If your Syncthing GUI is exposed behind a reverse proxy with HTTPS, use that URL instead:

curl https://syncthing.yourdomain.com/rest/system/ping \
  -H "X-API-Key: YOUR_API_KEY"

Set up the Vigilmon monitor:

  1. Log in to Vigilmon and click New Monitor → HTTP.
  2. Set URL to https://syncthing.yourdomain.com/rest/system/ping.
  3. Set Check interval to 60 seconds.
  4. Under Advanced → Request Headers, add:
    • X-API-Key: YOUR_API_KEY
  5. Set Expected status code to 200.
  6. Under Advanced → Keyword check, add:
    • Keyword present: pong
  7. Save the monitor.

Vigilmon now polls the Syncthing REST API every minute from multiple geographic regions.


Step 2: Monitor Web UI Availability

The /rest/system/ping endpoint confirms the Syncthing process is alive, but doesn't verify the web interface is functional. A misconfigured reverse proxy or a missing static asset can break the UI while the REST API remains healthy.

Add a keyword monitor on the web UI:

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

The Syncthing dashboard HTML includes the application name. If the web server fails to serve the frontend assets or the reverse proxy misconfigures the location block, this check fires independently of the REST API monitor.


Step 3: Monitor Sync Folder Health

Syncthing exposes folder status via its REST API at /rest/db/status. This endpoint returns the sync state for a given folder — whether it's idle, syncing, in error, or out of sync.

Monitor a specific folder's sync status:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to:
    https://syncthing.yourdomain.com/rest/db/status?folder=YOUR_FOLDER_ID
    
    Replace YOUR_FOLDER_ID with the folder ID shown in the Syncthing UI (e.g., documents or the auto-generated ID).
  3. Under Advanced → Request Headers, add:
    • X-API-Key: YOUR_API_KEY
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check:
    • Keyword present: state
    • Keyword absent: error
  6. Save.

The response includes a state field (idle, syncing, scanning) and an errors count. A folder stuck in error state or showing persistent out-of-sync items indicates a file conflict, permission issue, or disk problem that Syncthing cannot resolve automatically.


Step 4: Disk Space Monitoring via Heartbeat

Syncthing stops syncing when disk space on any node falls below a configurable threshold (default: 1% free). The service pauses gracefully but does not alert you externally.

Monitor disk space by configuring a heartbeat script on your Syncthing host that only calls Vigilmon when disk space is adequate:

#!/bin/bash
# Run via cron every 5 minutes
THRESHOLD=10  # percent
DISK_FREE=$(df / | awk 'NR==2{print $5}' | tr -d '%')
DISK_USED=$((100 - DISK_FREE))

if [ "$DISK_USED" -lt "$((100 - THRESHOLD))" ]; then
  curl -s "https://vigilmon.online/api/v1/heartbeat/YOUR_HEARTBEAT_ID" > /dev/null
fi

In Vigilmon, configure the heartbeat monitor:

  1. Click New Monitor → Heartbeat in Vigilmon.
  2. Set Expected interval to 10 minutes.
  3. Copy the heartbeat URL.
  4. Install the cron job on your Syncthing host: */5 * * * * /path/to/disk-check.sh

When disk usage exceeds 90%, the heartbeat stops firing, and Vigilmon alerts after the expected interval passes. This is the correct pattern: the heartbeat fires to indicate health, not to report a problem.


Step 5: SSL Certificate Monitoring

Syncthing's web GUI exposed via a reverse proxy (Nginx, Caddy, Traefik) requires a valid TLS certificate. An expired certificate locks out the web UI and API access from external tools.

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

  1. Open any of your HTTPS Syncthing 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: syncthing.yourdomain.com
Certificate expires in 5 days (2026-07-08)

Note: Syncthing's internal device-to-device sync uses its own self-signed certificates — Vigilmon monitors the public-facing HTTPS endpoint, not the inter-device sync protocol.


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 Discord, Slack, or ntfy.sh for mobile push notifications

A Syncthing downtime alert in Discord looks like:

🔴 DOWN: syncthing.yourdomain.com/rest/system/ping (HTTP 502)
Syncthing REST API unavailable
Region: EU-Central
Triggered: 2026-01-15 04:11 UTC

Heartbeat alert when disk fills up:

🔴 HEARTBEAT MISSED: syncthing-disk-space
No heartbeat received in 10 minutes
Last heartbeat: 2026-01-15 04:00 UTC

What You've Built

| Scenario | How Vigilmon catches it | |---|---| | Syncthing process crash or OOM kill | /rest/system/ping returns non-200 or times out | | Reverse proxy (Nginx/Caddy) down | HTTPS monitor detects 502 or TLS error | | Web UI frontend broken | Keyword monitor on dashboard fails | | Sync folder in error state | Folder status API monitor detects error keyword | | Disk space below threshold | Heartbeat stops firing; alert after missed interval | | SSL certificate expired or expiring | SSL expiry alert triggers at threshold |


Self-hosting Syncthing gives you privacy and control over your file sync — but without external monitoring, a crashed node or full disk silently diverges your data across devices. Vigilmon watches from outside your network, from multiple regions, with no agents to install.

Start monitoring your Syncthing node 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 →