tutorial

Monitoring Wallos with Vigilmon

Wallos tracks your subscriptions so you never miss a renewal — but if Wallos itself goes down, you miss the reminders. Here's how to monitor your Wallos instance's web UI, health endpoint, SQLite database, SSL certificate, and scheduled notifications with Vigilmon.

Wallos is a clean, self-hosted subscription tracker that keeps an eye on your recurring expenses and fires reminder notifications before renewal dates hit. But there's an irony in the setup: if Wallos goes down, those reminders stop — and you might not notice until a surprise charge lands. Vigilmon closes that gap by watching your Wallos instance from the outside, alerting you the moment the web UI, health endpoint, or scheduled notification job goes silent.

What You'll Set Up

  • HTTP uptime monitor for the Wallos web interface
  • Health endpoint check via /api/health
  • SQLite database connectivity validation
  • SSL certificate expiry alerts
  • Heartbeat monitor for scheduled notification runs

Prerequisites

  • Wallos deployed and accessible over HTTP or HTTPS
  • A free Vigilmon account

Step 1: Monitor the Wallos Web Interface

Wallos serves a PHP-based web UI that users interact with directly. Add a basic uptime check so you know immediately if the interface becomes unreachable:

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your Wallos URL: https://wallos.yourdomain.com.
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Click Save.

If Wallos is running behind a reverse proxy (nginx, Caddy, Traefik), use the proxied URL — you'll catch both application failures and proxy layer issues in a single check.


Step 2: Check the /api/health Endpoint

Wallos includes a health endpoint for quick application-layer validation. Unlike a homepage check, a health endpoint confirms the PHP runtime and routing are operational:

  1. Click Add MonitorHTTP / HTTPS.
  2. URL: https://wallos.yourdomain.com/api/health
  3. Check interval: 2 minutes.
  4. Expected HTTP status: 200.
  5. Optionally, under Advanced, set Expected response body contains to "status":"healthy".
  6. Click Save.

Verify the endpoint first:

curl -s https://wallos.yourdomain.com/api/health
# {"status":"healthy"}

If the endpoint is behind HTTP basic auth (Wallos can be configured this way), provide credentials using the HTTP Headers field:

Authorization: Basic <base64-encoded-credentials>

Step 3: Validate SQLite Database Connectivity

Wallos stores all subscription data in a SQLite file. If the database becomes corrupted, locked, or its volume unmounted, the app will often return a 500 error or a PHP error page while still technically listening on port 80. Catch this with a response body check:

  1. Open the web UI monitor created in Step 1.
  2. Under Advanced, set Expected response body must NOT contain to Fatal error and Database error.
  3. Click Save.

Vigilmon will alert you if those strings appear in the HTML response — a reliable indicator that PHP hit a database exception rather than serving a proper page.

For a more targeted check, add a second monitor pointing to a lightweight Wallos API route that queries the database (such as the subscription list endpoint) and verify it returns valid JSON.


Step 4: SSL Certificate Alerts

Wallos manages private financial data — subscription names, costs, and renewal dates. An expired certificate breaks HTTPS access and can expose your instance to downgrade attacks. Add certificate monitoring:

  1. Open the Wallos web UI monitor (Step 1).
  2. Enable Monitor SSL certificate.
  3. Set Alert when certificate expires in less than 21 days.
  4. Click Save.

Wallos is often deployed with Caddy or nginx + Let's Encrypt. Both auto-renew, but renewal failures are silent unless you're watching. A 21-day alert gives you enough buffer to investigate and renew manually if needed:

# For nginx + certbot
sudo certbot renew --dry-run

# For Caddy (usually automatic, but you can check logs)
journalctl -u caddy --since "7 days ago" | grep -i "certificate\|tls"

Step 5: Heartbeat for Scheduled Notifications

Wallos fires renewal reminders on a schedule — typically via a cron job or built-in task scheduler. If that scheduler stops running, upcoming renewals won't trigger alerts. Add a Vigilmon heartbeat to confirm the notification job is executing.

Create the heartbeat monitor:

  1. In Vigilmon, click Add MonitorCron Heartbeat.
  2. Name it Wallos notification scheduler.
  3. Set the expected ping interval to match your Wallos notification cron frequency (e.g. 1440 minutes for daily).
  4. Copy the heartbeat URL: https://vigilmon.online/heartbeat/abc123.

Wire it into Wallos's cron job:

If you manage Wallos notifications via a cron entry in your Docker or host crontab:

# Run Wallos notification check daily at 8 AM, then ping Vigilmon
0 8 * * * docker exec wallos php /var/www/html/cron/send_notifications.php && curl -s https://vigilmon.online/heartbeat/abc123

The && ensures Vigilmon is only pinged if the notification script exits successfully. A failed run leaves the heartbeat silent, and Vigilmon alerts you within one check window.


Step 6: Notification Routing

Wallos is a personal finance tool — failures can cause missed subscription renewals that cost real money. Route your Vigilmon alerts appropriately:

  1. Open each monitor → Notifications.
  2. For the web UI and health monitors, set Alert after 2 failed checks to avoid false positives from brief restarts.
  3. For the notification heartbeat, set Alert after 1 missed ping — a missed heartbeat means at least one batch of reminders didn't fire.
  4. Add your preferred channel: email, Slack, or push notification.

What You've Built

Vigilmon now provides independent oversight of your Wallos instance: UI availability, application health, SQLite database reachability, SSL certificate status, and scheduled notification delivery. Your subscription tracker has a safety net — so when Wallos needs attention, you'll know before you're hit with an unexpected charge.

Get started at vigilmon.online.

Monitor your app with Vigilmon

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

Start free →