tutorial

Monitoring Tandoor Recipes with Vigilmon: API Schema, Web UI, Background Tasks & SSL Alerts

How to monitor Tandoor Recipes self-hosted recipe manager with Vigilmon — /api/schema/ health check, web UI availability, background task monitoring, and SSL certificate alerts.

Tandoor Recipes is the self-hosted recipe management platform that home cooks and food bloggers use to organize their recipe collections, generate shopping lists, and plan meals. Because Tandoor runs as a Django application backed by PostgreSQL, several things can go wrong independently: the API can crash while the web UI still loads a cached version, background tasks like shopping list generation can stop while the UI appears healthy, or the database can fill up and silently block writes. Vigilmon gives you external visibility into Tandoor's API schema endpoint, web UI, background task health, and SSL certificate so you catch failures before your recipes become inaccessible.

What You'll Build

  • An HTTP monitor on Tandoor's /api/schema/ health endpoint
  • An HTTP monitor verifying web UI availability
  • An HTTP monitor checking background task health
  • SSL certificate monitoring for your Tandoor domain

Prerequisites

  • A running Tandoor instance with a public or network-reachable domain
  • HTTPS configured (e.g., https://recipes.example.com)
  • A free account at vigilmon.online

Step 1: Verify Tandoor's API Schema Endpoint

Tandoor exposes its OpenAPI schema at /api/schema/ — this is a lightweight endpoint that exercises the API layer without requiring authentication or database writes:

curl -I https://recipes.example.com/api/schema/

A healthy Tandoor instance returns HTTP 200 with an application/yaml or application/json content type containing the full API schema. The schema includes key identifiers like RecipeImage, Recipe, and ShoppingListEntry.

curl https://recipes.example.com/api/schema/ | head -20

Look for openapi: 3.0.3 at the top of the YAML response, confirming the Django REST Framework and DRF Spectacular are both operational.

Note: The /api/schema/ endpoint is publicly accessible by default on most Tandoor configurations. If you've restricted API access, use / (the web UI root) as your primary health signal instead.


Step 2: Create a Vigilmon HTTP Monitor for the API Schema Endpoint

  1. Log in to VigilmonAdd Monitor → HTTP.
  2. URL: https://recipes.example.com/api/schema/.
  3. Check interval: 60 seconds.
  4. Response timeout: 20 seconds.
  5. Expected status: 200.
  6. Keyword: openapi.
  7. Click Save.

This monitor catches:

  • Tandoor's Gunicorn/uWSGI worker crashes
  • PostgreSQL database connectivity failures (Tandoor requires a healthy database to generate the schema)
  • Python application errors causing 500 responses
  • Dependency failures after an upgrade

Step 3: Monitor Web UI Availability

Tandoor's web interface is a Vue.js single-page application served by Django. The frontend can fail in ways the API schema endpoint doesn't reveal — a missing static file, a broken asset manifest, or a Vue router misconfiguration.

curl https://recipes.example.com/

A healthy Tandoor instance returns HTTP 200 with HTML containing Tandoor in the page title or meta tags.

  1. Add Monitor → HTTP.
  2. URL: https://recipes.example.com/.
  3. Check interval: 2 minutes.
  4. Expected status: 200.
  5. Keyword: Tandoor.
  6. Label: Tandoor Web UI.
  7. Click Save.

When the web UI monitor fires but the API schema check is green, the Django backend is running but static files aren't being served. This often happens when collectstatic wasn't run after an update, or when the volume containing /staticfiles is misconfigured.


Step 4: Monitor Background Task Health

Tandoor uses Celery for background tasks including shopping list generation, recipe image processing, and nutritional data imports. These tasks run asynchronously — a crashed Celery worker means tasks queue up silently while the web UI and API appear perfectly healthy.

Tandoor exposes a health endpoint for its task system:

curl https://recipes.example.com/api/recipe-healthcheck/

This endpoint returns HTTP 200 with {"status": "ok"} when Celery workers are processing tasks. If workers are down, the endpoint either fails or returns an error status.

  1. Add Monitor → HTTP.
  2. URL: https://recipes.example.com/api/recipe-healthcheck/.
  3. Check interval: 5 minutes.
  4. Expected status: 200.
  5. Keyword: ok.
  6. Label: Tandoor Background Tasks.
  7. Click Save.

If the healthcheck endpoint is unavailable: Some Tandoor configurations don't expose this route. As an alternative, monitor https://recipes.example.com/api/food/?page=1 with an authentication header — a successful food list query confirms Celery has processed the ingredient index.


Step 5: Monitor SSL Certificates

Tandoor is typically accessed by the same person or household on a regular schedule — a recipe you wanted to check while cooking becomes inaccessible if the SSL certificate has expired and your browser blocks the page.

  1. Add Monitor → SSL Certificate.
  2. Domain: recipes.example.com.
  3. Alert when expiry is within: 30 days.
  4. Alert again: 14 days, 7 days, 3 days, 1 day.
  5. Click Save.

For a self-hosted service like Tandoor running on a home server or VPS, a 30-day warning is especially valuable because certificate renewal is often manual or relies on a cron job that may have stopped running.


Step 6: Configure Alerting

In Vigilmon under Settings → Notifications, configure your alert channels:

| Monitor | Trigger | Action | |---|---|---| | /api/schema/ | Non-200 or keyword missing | Check Django/Gunicorn logs; verify PostgreSQL connectivity | | Web UI | Non-200 or keyword missing | Run collectstatic; check static file volume and reverse proxy | | Background tasks | Non-200 or keyword missing | Check Celery worker container; verify Redis/broker connectivity | | SSL certificate | < 30 days to expiry | Renew certificate; check Let's Encrypt or ACME client config |

Alert after: 2 consecutive failures for HTTP monitors to avoid false positives during Tandoor restarts. 1 failure for SSL monitors.


Common Tandoor Failure Modes and What Vigilmon Catches

| Scenario | Vigilmon monitor | |---|---| | Gunicorn worker crash | API schema endpoint unreachable; alert within 60 s | | PostgreSQL goes down | API schema returns 500; all recipe access fails | | Celery worker stops | Background task monitor fires; UI appears healthy | | Static files missing after update | Web UI monitor fires; API stays green | | Redis broker down | Celery tasks queue; background monitor fires | | SSL certificate expires | SSL monitor alerts at 30 days; browser access blocked | | Disk full | Database writes fail; schema may still return 200 initially | | Image processing backlog | Tasks queue silently; background health check detects it |


Tandoor holds your recipe collection, shopping lists, and meal plans — the kind of data that's most valuable exactly when you're standing in the kitchen and need it immediately. Vigilmon watches the API schema endpoint, web UI, background task health, and SSL certificate so you know the moment Tandoor has a problem, long before you discover your recipes are unreachable mid-cook.

Start monitoring Tandoor in under 5 minutes — 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 →