Why Monitor Odoo?
Without monitoring, you discover problems when users complain. With monitoring, you discover problems before users notice. Odoo servers can fail silently: memory leaks, disk filling up, stuck crons, database bloat — all preventable with proper monitoring.
What to Monitor
| Metric | Warning | Critical | Tool |
|---|---|---|---|
| CPU usage | >70% | >90% | htop, Prometheus |
| Memory usage | >80% | >95% | free, node_exporter |
| Disk usage | >80% | >90% | df, node_exporter |
| Odoo process | Not running | N/A | systemd, monit |
| PostgreSQL connections | >70% max | >90% max | pg_stat_activity |
| HTTP response time | >3s | >10s | curl, uptime checker |
| HTTP status | 5xx | Down | /web/health endpoint |
| SSL certificate | <30 days | <7 days | certbot, checker |
| Backup success | Failed | Missing 24h+ | cron log, S3 check |
| Cron health | Cron stuck | Multiple stuck | ir_cron lastcall |
Method 1: Simple Monitoring (Free)
Uptime Check with curl
#!/bin/bash
# /opt/scripts/health-check.sh
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8069/web/health)
if [ "$HTTP_CODE" != "200" ]; then
echo "[$(date)] Odoo DOWN! HTTP $HTTP_CODE" >> /var/log/odoo-health.log
# Send alert (email, Slack, PagerDuty)
curl -X POST "$SLACK_WEBHOOK" \
-d '{"text":"🔴 Odoo is DOWN! HTTP '"$HTTP_CODE"'"}'
# Try restart
systemctl restart odoo
fi
# Cron: every 5 minutes
# */5 * * * * /opt/scripts/health-check.shDisk & Memory Alerts
#!/bin/bash
# /opt/scripts/resource-check.sh
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | tr -d '%')
MEM_USAGE=$(free | awk '/Mem:/ {printf("%.0f", $3/$2 * 100)}')
if [ "$DISK_USAGE" -gt 85 ]; then
curl -X POST "$SLACK_WEBHOOK" \
-d '{"text":"⚠️ Disk usage at '"$DISK_USAGE"'%"}'
fi
if [ "$MEM_USAGE" -gt 90 ]; then
curl -X POST "$SLACK_WEBHOOK" \
-d '{"text":"⚠️ Memory usage at '"$MEM_USAGE"'%"}'
fiMethod 2: UptimeRobot (Free Tier)
# UptimeRobot.com — free for 50 monitors
# Add monitor:
# URL: https://your-odoo.com/web/health
# Type: HTTP
# Interval: 5 minutes
# Alert contacts: email, Slack, PagerDuty
# Also monitor:
# - SSL certificate expiry
# - Keyword check (response contains "ok")Method 3: Prometheus + Grafana (Production)
# For serious production monitoring:
# Install node_exporter on Odoo server:
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xzf node_exporter-*.tar.gz
sudo mv node_exporter-*/node_exporter /usr/local/bin/
# node_exporter as systemd service:
# Exposes: CPU, memory, disk, network metrics
# Prometheus scrapes these metrics
# Grafana visualizes with dashboards
# PostgreSQL exporter:
# Monitors: connections, query times, table sizes, locks
# Alertmanager rules:
# - OdooDown: probe_success == 0 for 5m
# - HighCPU: cpu_usage > 90% for 10m
# - DiskFull: disk_usage > 90%
# - PostgresConnections: connections > 80% maxMethod 4: Cloud Provider Monitoring
# Most cloud providers include basic monitoring:
# DigitalOcean: built-in CPU, memory, disk, bandwidth
# AWS CloudWatch: EC2 + RDS metrics
# Hetzner: Cloud Console metrics
# Vultr: built-in monitoring
# GCP: Cloud Monitoring
# Set up alerts at:
# CPU > 80% for 10 minutes
# Disk > 85%
# Memory > 90%Log-Based Monitoring
# Monitor Odoo logs for errors:
# Approach 1: Simple grep + alert
tail -F /var/log/odoo/odoo.log | grep --line-buffered -i "error\|critical\|killed" | while read line; do
curl -X POST "$SLACK_WEBHOOK" -d "{\"text\":\"🔴 Odoo error: $line\"}"
done
# Approach 2: Fail2ban for security
# Monitor /var/log/odoo/odoo.log for repeated login failures
# Auto-block IPs with too many failed attemptsMonitoring Checklist
- HTTP health check every 5 minutes
- SSL certificate expiry alert (30 days before)
- Disk usage alert at 80%
- Memory usage alert at 85%
- CPU sustained high alert at 80% for 10min
- PostgreSQL connection count monitoring
- Backup success verification daily
- Cron health check (lastcall freshness)
- Log monitoring for errors and security events
- Uptime dashboard for stakeholders
DeployMonkey
DeployMonkey includes built-in monitoring for all Odoo instances — health checks, resource monitoring, log analysis, cron health, and backup verification. The AI agent diagnoses issues and alerts you with the specific fix. Zero monitoring setup needed.