tutorial

How to Monitor Weblate with Vigilmon

Monitor your Weblate translation platform — health API, web UI, Celery worker heartbeat, and SSL certificate alerts with Vigilmon.

Weblate is the go-to open-source platform for managing software translations at scale. When Weblate goes down, your localization pipeline stalls: translators can't contribute, automated translation commits stop landing, and your CI/CD pipeline may fail waiting for updated strings. Vigilmon gives you instant visibility into your Weblate deployment so you catch failures before they block your team.

What You'll Set Up

  • HTTP monitor for the Weblate API health endpoint (/api/)
  • Web UI availability check
  • Celery worker heartbeat monitor
  • SSL certificate expiry alert

Prerequisites

  • A running Weblate instance (Docker, pip install, or a managed Weblate.cloud plan)
  • A free Vigilmon account

Why Monitor Weblate

Weblate's architecture separates web requests (Django + uWSGI or Gunicorn) from background processing (Celery workers). The workers handle translation memory updates, repository syncing, and notification emails. It's entirely possible for the web UI to appear healthy while Celery workers have silently stopped, causing translations to queue up without ever syncing to your Git repositories. External monitoring catches both layers independently.


Step 1: Monitor the API Health Endpoint

Weblate's REST API lives at /api/ and returns a 200 response with JSON metadata when the application is running correctly. This is your fastest signal for application-layer health.

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter: https://weblate.yourdomain.com/api/
  4. Set Check interval to 1 minute.
  5. Set Expected status code to 200.
  6. In Expected body contains, enter "url" — the API root response includes URL fields for all endpoints, so this confirms the Django application is responding correctly.
  7. Click Save.

If your Weblate database becomes unavailable or Django fails to start, this endpoint returns a 500 error and Vigilmon fires immediately.


Step 2: Monitor Web UI Availability

The API endpoint tests application logic, but your translators use the browser interface. Add a UI monitor to catch rendering failures:

  1. Click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter: https://weblate.yourdomain.com
  4. Set Expected status code to 200.
  5. In Expected body contains, enter Weblate — this verifies the HTML template renders, not just that Django responds with any content.
  6. Set Response time threshold: warn at 1200ms, critical at 3500ms.
  7. Attach your alert channel and save.

Step 3: Monitor the Celery Worker

Celery workers are responsible for Weblate's most important background operations: syncing translations back to Git, processing machine translation requests, and sending email notifications. A stopped Celery worker is invisible at the web UI level until users notice that commits have stopped appearing in their repos.

Set up a heartbeat monitor in Vigilmon:

  1. Click Add MonitorHeartbeat.
  2. Name it Weblate Celery Worker.
  3. Set Expected interval to 5 minutes, Grace period to 3 minutes.
  4. Copy the heartbeat URL (e.g. https://vigilmon.online/heartbeat/xyz789).

Now configure Weblate's Celery beat to ping this URL. Add a periodic task to your CELERY_BEAT_SCHEDULE in settings.py or settings_local.py:

from datetime import timedelta

CELERY_BEAT_SCHEDULE = {
    # ... your existing tasks ...
    "vigilmon-heartbeat": {
        "task": "weblate.utils.tasks.ping_url",
        "schedule": timedelta(minutes=5),
        "kwargs": {"url": "https://vigilmon.online/heartbeat/xyz789"},
    },
}

Alternatively, use a simple cron job on the host to check the Celery process directly:

# Add to crontab with: crontab -e
*/5 * * * * pgrep -f "celery" > /dev/null && curl -fsS --max-time 10 https://vigilmon.online/heartbeat/xyz789

If Celery crashes or the beat scheduler stops, Vigilmon alerts you after the 3-minute grace period.


Step 4: SSL Certificate Monitoring

Weblate instances are often accessed directly by CI/CD systems and translation tools using HTTPS. A silent certificate expiry breaks all automated integrations without any visible error in the Weblate UI.

For each HTTPS monitor created above:

  1. Open the monitor settings.
  2. Enable SSL certificate alert.
  3. Set Warn to 21 days before expiry, Critical to 7 days.

This gives you three weeks to renew via Let's Encrypt (certbot renew) or your certificate authority before any translator or automated tool is affected.


Step 5: Set Up Alert Channels

  1. In Vigilmon, go to Alert ChannelsAdd Channel.
  2. For team notifications, choose Slack and paste your incoming webhook URL.
  3. For on-call alerts, choose PagerDuty or Email.
  4. Attach the alert channel to all four Weblate monitors.

Test each channel before going live — Vigilmon's Test button sends a sample alert so you can confirm the routing works.


Step 6: Confirm Everything Works

Run a smoke test before trusting this setup in production:

  1. Temporarily change one monitor's Expected body contains to a string that cannot match, and verify an alert fires within 2 minutes.
  2. Restore the correct value and confirm a recovery notification arrives.
  3. Review the Response time history graph — latency spikes often correlate with large translation memory rebuilds or Git repository re-syncs. Knowing the baseline helps you tune alert thresholds.

Going Further

  • Repository sync check: Add a monitor for a specific project's component API endpoint (e.g. /api/components/myproject/main/) to verify that Git integration is returning valid repository metadata.
  • Translation lock alerting: If your Weblate instance locks translations during maintenance, Vigilmon's downtime history gives you an audit trail of the window.
  • Status page: Publish a Vigilmon status page so your translators can check service status themselves instead of emailing your ops team.

Your Weblate instance is now fully instrumented: API health, UI rendering, Celery worker liveness, and SSL certificate expiry — all visible from a single Vigilmon dashboard.

Monitor your app with Vigilmon

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

Start free →