Odoo is one of the most comprehensive open-source ERP platforms: CRM, accounting, inventory, HR, project management, and e-commerce in a single application. When Odoo goes down, sales pipelines stall, warehouse operations halt, and customer-facing portals go dark. Vigilmon monitors your Odoo instance from multiple geographic regions and fires an alert the moment anything breaks — before your team or customers discover it themselves.
What You'll Set Up
- Vigilmon HTTP monitor for the Odoo web UI
- A monitor for the
/web/healthhealth endpoint - A TCP port monitor for Odoo's longpolling service
- An SSL certificate expiry alert
Prerequisites
- A running Odoo 16/17 instance (self-hosted)
- A free Vigilmon account
- Basic familiarity with your Odoo deployment topology
Why Odoo Needs External Monitoring
Odoo deployments typically involve three distinct components: the Odoo application server (Python/Werkzeug), a PostgreSQL database, and a separate longpolling worker process for real-time features (live chat, notifications, collaborative editing). A typical Nginx reverse proxy fronts all of these.
This architecture creates multiple independent failure points. The Odoo web UI can stop responding if the application server process dies, if PostgreSQL runs out of connections, or if Nginx misconfigures after a certificate renewal. Real-time features break when the longpolling port becomes unreachable — but the main web UI continues working, so users notice missed notifications without a clear error. External monitoring from Vigilmon covers each layer independently.
Step 1: Monitor the Odoo Web UI
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your Odoo URL, e.g.
https://erp.yourdomain.com. - Set Check interval to
1 minute. - Set Expected status code to
200. - Click Save.
Vigilmon probes from multiple regions. A crash in the Odoo process, a PostgreSQL connection failure, or an Nginx misconfiguration all produce a non-200 response that triggers an alert within one minute.
Step 2: Monitor the /web/health Endpoint
Odoo 16 and later expose a built-in health check at /web/health. This lightweight endpoint bypasses session management and template rendering — it returns a fast JSON response confirming the application is alive.
- Click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter
https://erp.yourdomain.com/web/health. - Set Expected status code to
200. - In Expected body contains, enter
"status":"pass". - Click Save.
A healthy response looks like:
{
"status": "pass"
}
This endpoint is faster and more reliable than monitoring the full Odoo web UI — it does not invoke the ORM, does not require a database session, and responds even when Odoo's worker pool is under heavy load. Use it as your primary availability signal.
Step 3: Monitor the Longpolling Port
Odoo's real-time features — live chat, inbox notifications, calendar updates, and collaborative document editing — use a separate Gevent-based longpolling worker. By default this runs on port 8072. If this port becomes unreachable (worker process died, firewall rule changed, Nginx proxy misconfigured), real-time features silently fail for all users.
- Click Add Monitor.
- Set Type to
TCP. - Enter your server hostname, e.g.
erp.yourdomain.com. - Set Port to
8072(or whichever port your Nginx proxies longpolling to). - Set Check interval to
2 minutes. - Click Save.
If you proxy longpolling through Nginx at a path like https://erp.yourdomain.com/longpolling, use an HTTP monitor on that path instead:
- Set Type to
HTTP / HTTPS. - Enter
https://erp.yourdomain.com/longpolling/poll. - Set Expected status code to any non-5xx value (the longpolling endpoint returns 200 or hangs waiting for events, so a connection timeout may be normal — tune accordingly).
Step 4: Monitor the SSL Certificate
Odoo handles sensitive business data: financial records, customer information, HR data. An expired SSL certificate prevents all access and may trigger compliance issues.
- In Vigilmon, click Add Monitor → SSL Certificate.
- Enter your Odoo domain, e.g.
erp.yourdomain.com. - Set Alert days before expiry to
30. - Click Save.
Vigilmon checks the certificate daily and alerts you 30 days before expiry — plenty of time to renew via Certbot or your certificate authority before users are locked out.
Step 5: Configure Alert Channels
Route Odoo alerts where your operations team responds fastest.
Slack Webhook
- Create a Slack incoming webhook for your
#erp-alertschannel. - In Vigilmon, go to Alert Channels → Add Channel → Webhook.
- Paste the webhook URL and use this payload:
{
"text": "🚨 *{{monitor_name}}* is {{status}}!\nURL: {{url}}\nRegion: {{region}}\nTime: {{timestamp}}"
}
- Attach this channel to all four Odoo monitors.
PagerDuty or On-Call Integration
For production ERP systems, connect Vigilmon to your on-call rotation via a webhook pointing at your PagerDuty Events API or Opsgenie endpoint. Odoo outages during business hours directly block sales and warehouse operations — they warrant immediate escalation.
Step 6: Verify the Setup
- Check the health endpoint: Run
curl https://erp.yourdomain.com/web/healthand confirm you see"status":"pass". - Test TCP connectivity: Run
nc -zv erp.yourdomain.com 8072to verify the longpolling port is reachable before Vigilmon monitors it. - Simulate downtime: Temporarily stop the Odoo service (
sudo systemctl stop odoo) and confirm Vigilmon fires alerts for both the web UI and health endpoint monitors within one minute. - Restore and verify recovery: Restart Odoo and confirm Vigilmon sends a recovery notification.
Going Further
- Response time threshold: Odoo rendering can be slow on large databases. Set a warn at
3000msand critical at8000msto detect PostgreSQL query regressions before they become user-visible timeouts. - Scheduled action monitoring: Odoo's built-in cron (Scheduled Actions) handles automatic invoicing, stock replenishment, and email campaigns. Add a Vigilmon cron heartbeat and call it from a shell script that runs
odoo-bin --stop-after-init -d your_db --execute-action your_cron_id && curl -s https://vigilmon.online/heartbeat/YOUR_TOKEN. - Multi-database setups: If you host multiple Odoo databases per instance, add a health monitor for each database's URL path or add
?db=yourdbto the health check URL where supported. - Backup verification: Add a cron heartbeat that pings Vigilmon after each PostgreSQL backup run — silent backup failures are a common disaster-recovery gap in self-hosted ERP deployments.
Your Odoo ERP is now monitored at every critical layer: web availability, application health, real-time service port, and SSL certificate safety — with alerts reaching your team before a silent failure disrupts business operations.