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.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter:
https://weblate.yourdomain.com/api/ - Set Check interval to
1 minute. - Set Expected status code to
200. - 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. - 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:
- Click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter:
https://weblate.yourdomain.com - Set Expected status code to
200. - In Expected body contains, enter
Weblate— this verifies the HTML template renders, not just that Django responds with any content. - Set Response time threshold: warn at
1200ms, critical at3500ms. - 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:
- Click Add Monitor → Heartbeat.
- Name it
Weblate Celery Worker. - Set Expected interval to
5 minutes, Grace period to3 minutes. - 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:
- Open the monitor settings.
- Enable SSL certificate alert.
- Set Warn to
21 daysbefore expiry, Critical to7 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
- In Vigilmon, go to Alert Channels → Add Channel.
- For team notifications, choose Slack and paste your incoming webhook URL.
- For on-call alerts, choose PagerDuty or Email.
- 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:
- Temporarily change one monitor's Expected body contains to a string that cannot match, and verify an alert fires within 2 minutes.
- Restore the correct value and confirm a recovery notification arrives.
- 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.