Como monitorizar Odoo en produccion: senales de alerta clave
Para monitorizar Odoo en produccion necesitas configurar alertas de CPU y memoria del servidor, revisar los logs diariamente filtrando por niveles ERROR y CRITICAL, controlar que los tiempos de respuesta se mantengan por debajo de 3 segundos en operaciones clave, supervisar el estado de las integraciones externas y ejecutar mantenimiento periodico de PostgreSQL con VACUUM y REINDEX. Herramientas como Zabbix para monitorizacion de infraestructura y Grafana para dashboards visuales complementan la monitorizacion nativa de Odoo y proporcionan visibilidad completa del estado del ERP.
Odoo es el ERP que mas PYMEs espanolas estan adoptando gracias a su flexibilidad, su modelo open source y su amplia cobertura funcional. Sin embargo, pasar de un Odoo recien instalado a un Odoo en produccion con decenas de usuarios concurrentes, miles de registros y multiples integraciones es un cambio radical que muchas empresas no gestionan correctamente.
Segun la documentacion oficial de Odoo, el 80 % de los problemas de rendimiento en produccion se deben a consultas SQL no optimizadas y falta de monitorizacion proactiva (Odoo Documentation, Performance Optimization Guide). Un estudio de Panorama Consulting revela que el 56 % de las implementaciones de ERP experimentan interrupciones operativas durante el primer ano en produccion por falta de supervision adecuada (Panorama Consulting, ERP Report 2024). El informe de Gartner sobre operaciones IT anade que las empresas con monitorizacion proactiva reducen el tiempo de inactividad no planificado en un 70 % respecto a las que operan de forma reactiva (Gartner, IT Operations Management Survey 2024).
Un Odoo lento o inestable no solo frustra a los usuarios: paraliza la facturacion, retrasa los pedidos, corrompe datos de inventario y genera perdidas economicas directas. La monitorizacion proactiva es la diferencia entre detectar un problema antes de que afecte al negocio y descubrirlo cuando los usuarios ya no pueden trabajar.
Senales de alerta que no debes ignorar
Tiempos de respuesta degradados
El indicador mas evidente de un problema en Odoo es la lentitud. Si validar una factura tarda mas de 3 segundos, generar un informe de ventas supera los 10 segundos o buscar un producto en el inventario se percibe como lento, hay un problema que requiere investigacion inmediata.
Mide los tiempos de respuesta de las operaciones criticas de forma regular. Documenta los tiempos base cuando el sistema funciona correctamente para tener una referencia con la que comparar. Puedes usar la herramienta de desarrollo del navegador (pestaña Network en Chrome DevTools) para medir los tiempos de las peticiones HTTP a Odoo, o activar el modo debug de Odoo anadiendo ?debug=1 a la URL para obtener informacion adicional sobre las consultas ejecutadas.
Errores recurrentes en logs
Los logs de Odoo son la primera fuente de informacion ante cualquier problema. Odoo utiliza el modulo logging de Python con los siguientes niveles de gravedad:
- DEBUG: informacion detallada para desarrollo, no relevante en produccion.
- INFO: eventos operativos normales como inicio de servicios o ejecucion de crons.
- WARNING: situaciones anomalas que no interrumpen el servicio pero requieren atencion.
- ERROR: fallos que impiden completar una operacion concreta.
- CRITICAL: fallos graves que pueden provocar la caida del servicio.
Filtra los logs por modulo y nivel de gravedad con el siguiente comando:
grep -E "ERROR|CRITICAL" /var/log/odoo/odoo-server.log | grep "account\|stock\|sale" | tail -100
Un error aislado puede ser una anomalia. Un error que se repite sistematicamente es un problema estructural que empeorara con el tiempo. Presta atencion especial a errores de tipo TransactionRollbackError (bloqueos en PostgreSQL), MemoryError (falta de RAM) y ConnectionError (fallos de integraciones externas).
Consumo anomalo de recursos del servidor
Un servidor que mantiene la CPU por encima del 80 % de forma sostenida, la memoria RAM por encima del 90 % o el disco con menos del 15 % libre esta al borde del fallo. Estos umbrales deben monitorizarse continuamente, no revisarse ocasionalmente.
Para una comprobacion rapida desde la terminal del servidor:
# CPU y memoria en tiempo real
top -bn1 | head -20
# Espacio en disco
df -h
# Procesos de Odoo y su consumo
ps aux | grep odoo | grep -v grep
Crecimiento descontrolado de la base de datos
PostgreSQL, la base de datos de Odoo, puede crecer de forma descontrolada si no se gestionan correctamente los logs, los adjuntos y las tablas temporales. Una base de datos que pasa de 5 GB a 15 GB en un mes sin un aumento proporcional de la actividad indica un problema que debe investigarse.
Consulta el tamano de las tablas mas grandes para identificar el origen del crecimiento:
SELECT relname AS tabla,
pg_size_pretty(pg_total_relation_size(relid)) AS tamano
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 15;
Las tablas ir_attachment, ir_logging, mail_message y ir_sessions suelen ser las principales responsables del crecimiento inesperado.
Fallos en integraciones externas
Las integraciones con bancos, pasarelas de pago, terminales POS, plataformas de ecommerce y servicios de correo son puntos frecuentes de fallo. Un cambio en la API del proveedor, un certificado SSL expirado o un token de autenticacion caducado puede romper silenciosamente una integracion critica sin que nadie se entere hasta que un usuario reporta el problema.
Workers y longpolling mal configurados
Odoo utiliza workers para gestionar las peticiones HTTP y un proceso de longpolling para las notificaciones en tiempo real (chat, actualizaciones de formularios). Una configuracion incorrecta es causa frecuente de lentitud y caidas:
- Workers insuficientes: la formula recomendada es
(2 x CPU cores) + 1. Con 4 nucleos, configura 9 workers. - limit_memory_hard: establece el limite maximo de RAM por worker. Si un worker lo supera, se reinicia automaticamente. Un valor habitual es 2684354560 (2.5 GB).
- limit_time_real: tiempo maximo en segundos que un worker puede procesar una peticion. Valor recomendado: 120 segundos.
- longpolling_port: debe estar configurado en un puerto separado (por defecto 8072) y gestionado por un proxy inverso como Nginx.
Comprueba la configuracion activa en el archivo /etc/odoo/odoo.conf:
[options]
workers = 9
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_time_real = 120
limit_time_cpu = 60
longpolling_port = 8072
Como configurar la monitorizacion paso a paso
Paso 1. Monitorizacion del servidor con Zabbix
Configura Zabbix para supervisar el servidor de Odoo 24/7 con alertas automaticas:
- CPU: alerta cuando supere el 80 % de uso sostenido durante mas de 5 minutos.
- Memoria RAM: alerta cuando el uso supere el 85 %.
- Disco: alerta cuando el espacio libre baje del 20 %.
- Red: alerta ante latencia anormal o perdida de paquetes.
- Servicios: verifica que los procesos de Odoo (workers + longpolling) y PostgreSQL estan activos.
- Certificados SSL: alerta cuando falten menos de 30 dias para la expiracion.
Anade un item personalizado en Zabbix para monitorizar el numero de workers activos de Odoo:
# Script para Zabbix UserParameter
UserParameter=odoo.workers,ps aux | grep "odoo.*--workers" | grep -v grep | wc -l
Paso 2. Revision sistematica de logs de Odoo
Configura la rotacion de logs con logrotate para evitar que crezcan indefinidamente:
# /etc/logrotate.d/odoo
/var/log/odoo/*.log {
daily
rotate 30
compress
delaycompress
missingok
notifempty
copytruncate
}
Establece una rutina de revision:
- Diaria: revisa los errores de nivel CRITICAL y ERROR con el comando
grepmostrado anteriormente. - Semanal: analiza los warnings y busca patrones recurrentes. Presta atencion a errores de cron jobs que no se ejecutan.
- Mensual: revision completa con analisis de tendencias. Compara el volumen de errores con el mes anterior.
Para centralizar logs de multiples servidores, utiliza herramientas como Graylog o ELK Stack que permiten buscar, filtrar y crear alertas sobre patrones especificos.
Paso 3. Monitorizacion de tiempos de respuesta
Establece un conjunto de operaciones criticas que se monitorizan activamente:
- Validar una factura de venta (objetivo: menos de 3 segundos).
- Generar el informe de ventas del mes (objetivo: menos de 10 segundos).
- Buscar un producto en el inventario (objetivo: menos de 2 segundos).
- Crear un pedido de compra (objetivo: menos de 3 segundos).
- Procesar una venta en el punto de venta (objetivo: menos de 2 segundos).
Documenta los tiempos base y configura alertas cuando se superen en mas de un 50 %. Puedes crear un script de monitorizacion que mida los tiempos de respuesta de las URLs criticas de Odoo:
#!/bin/bash
# Medir tiempo de respuesta de Odoo
RESPONSE_TIME=$(curl -o /dev/null -s -w "%{time_total}" https://tuodoo.empresa.com/web/login)
if (( $(echo "$RESPONSE_TIME > 3.0" | bc -l) )); then
echo "ALERTA: Tiempo de respuesta elevado: ${RESPONSE_TIME}s"
fi
Paso 4. Monitorizacion de cron jobs
Los cron jobs de Odoo ejecutan tareas programadas como sincronizacion de correo, actualizacion de tipos de cambio, calculo de costes y generacion de informes. Un cron que falla silenciosamente puede provocar datos desactualizados durante dias sin que nadie lo detecte.
Revisa el estado de los cron jobs desde la interfaz de Odoo en Ajustes > Tecnico > Automatizacion > Acciones planificadas. Comprueba la fecha de la ultima ejecucion y busca errores en los logs filtrando por ir.cron:
grep "ir.cron" /var/log/odoo/odoo-server.log | grep -i "error\|failed" | tail -20
Paso 5. Supervision de integraciones externas
Crea verificaciones automaticas para cada integracion:
- Bancos: verifica la sincronizacion diaria de extractos. Si usas OCA bank modules, comprueba la tabla
account_bank_statement_importpor errores. - Pasarelas de pago: confirma que las transacciones se procesan correctamente. Revisa los webhooks de Redsys, Stripe o PayPal.
- Ecommerce: verifica la sincronizacion de pedidos y stock entre Odoo y la tienda online.
- Correo: confirma que los emails de facturacion salen y se entregan revisando la cola de correo en Ajustes > Tecnico > Correo electronico > Emails.
- POS: comprueba que los terminales de punto de venta sincronizan las sesiones y los pagos correctamente.
Programa estas verificaciones en horarios criticos: primera hora de la manana y despues de cada cierre contable.
Paso 6. Optimizacion de la base de datos PostgreSQL
La base de datos es el corazon de Odoo y requiere mantenimiento regular:
- VACUUM ANALYZE: ejecuta semanalmente para recuperar espacio y actualizar las estadisticas del planificador de consultas.
VACUUM ANALYZE;
- REINDEX: reindexar las tablas mas grandes trimestralmente mejora los tiempos de consulta.
REINDEX DATABASE nombre_base_datos;
- Consultas lentas: activa
pg_stat_statementspara identificar las consultas que mas tiempo consumen.
-- Top 10 consultas mas lentas
SELECT query, calls, mean_exec_time, total_exec_time
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 10;
- Limpieza de sesiones: elimina las sesiones expiradas de la tabla
ir_sessionsque pueden acumular millones de registros. - Adjuntos huerfanos: revisa y elimina adjuntos que no estan vinculados a ningun registro.
- Backups verificados: programa backups diarios con
pg_dumpy verifica su restauracion mensualmente.
pg_dump -Fc nombre_base_datos > /backups/odoo_$(date +%Y%m%d).dump
Paso 7. Pruebas periodicas de carga
Simula escenarios de uso intensivo para detectar cuellos de botella antes de que se manifiesten en produccion:
- Prueba con el doble de usuarios concurrentes habituales usando herramientas como Locust o Apache JMeter.
- Genera informes pesados durante operaciones normales para medir el impacto.
- Simula picos de actividad como cierres de mes o campanas comerciales.
- Configura un informe semanal automatizado que resuma: tiempo medio de respuesta, errores detectados, estado de integraciones y consumo de recursos.
Dashboards con Grafana para visibilidad completa
Grafana permite crear paneles visuales en tiempo real que muestran el estado de todo el ecosistema de Odoo en una sola pantalla:
- Panel de infraestructura: CPU, RAM, disco y red del servidor con graficos de tendencia.
- Panel de Odoo: usuarios conectados, tiempos de respuesta, errores por modulo y estado de workers.
- Panel de PostgreSQL: tamano de la base de datos, consultas lentas, conexiones activas, bloqueos y tasa de cache hit (deberia estar por encima del 99 %).
- Panel de integraciones: estado de cada conexion externa con indicadores semaforo (verde/amarillo/rojo).
Conecta Grafana a Zabbix como fuente de datos para reutilizar las metricas ya recopiladas. Estos dashboards se pueden compartir con gerencia como parte del informe mensual IT, proporcionando visibilidad del estado del ERP sin necesidad de conocimientos tecnicos.
Cuando escalar los recursos del servidor
Si tras optimizar consultas, limpiar la base de datos y ajustar la configuracion de workers, el rendimiento sigue siendo insuficiente, es momento de escalar:
- Mas RAM: Odoo se beneficia enormemente de memoria adicional para la cache de PostgreSQL. La recomendacion es asignar al menos el 25 % de la RAM total a
shared_buffersy el 50 % aeffective_cache_size. - CPU mas rapida: las operaciones de Odoo son mas sensibles a la velocidad por nucleo que al numero de nucleos.
- Disco SSD/NVMe: si aun usas discos mecanicos, la migracion a SSD es la mejora con mayor impacto inmediato.
- Separacion de servicios: en entornos con mas de 50 usuarios, considera separar Odoo y PostgreSQL en servidores distintos.
Problemas frecuentes y solucion
- Errores repentinos en modulos clave: verifica si se han aplicado actualizaciones recientes de Odoo o modulos de terceros. Comprueba conflictos entre modulos personalizados y actualizaciones del core. Revierte la actualizacion si es necesario y prueba en un entorno de staging antes de reaplicar.
- Lentitud general del sistema: ejecuta
VACUUM ANALYZEen PostgreSQL, revisa las consultas mas lentas conpg_stat_statements, comprueba que los workers estan correctamente dimensionados y verifica que no haya procesos cron acumulados ejecutandose simultaneamente. - Caidas periodicas del servicio: revisa los logs del sistema operativo (
dmesg,/var/log/syslog) y de Odoo en busca de errores de memoria (OOM killer). Ajusta el parametrolimit_memory_harden la configuracion de Odoo y aumenta la RAM del servidor si es necesario. - Integraciones que dejan de funcionar: comprueba certificados SSL, tokens de autenticacion y cambios en las APIs de los proveedores. Configura verificaciones automaticas para detectar estos fallos antes de que afecten a los usuarios.
- Cron jobs que no se ejecutan: verifica que los registros de
ir.cronestan activos en la base de datos, que no hay workers bloqueados y que el parametromax_cron_threadses al menos 1 en la configuracion de Odoo. - Longpolling no funciona: comprueba que Nginx esta redirigiendo correctamente las peticiones del bus al puerto 8072 y que el worker de longpolling esta activo.
Preguntas frecuentes
Que senales indican un problema grave en Odoo? Errores constantes al facturar, tiempos de carga superiores a 5 segundos en operaciones basicas, reinicios frecuentes del servicio, crecimiento inusual del uso de disco o mensajes de error OOM (Out of Memory) en los logs del sistema. Tambien la acumulacion de cron jobs pendientes y fallos recurrentes en integraciones bancarias o de pagos.
Con que frecuencia debo revisar los logs? En entornos criticos con facturacion diaria, diariamente. Para uso estandar en PYMEs con menos de 20 usuarios, 2-3 veces por semana es suficiente. La monitorizacion automatizada con alertas de Zabbix complementa la revision manual y te avisa en tiempo real de los problemas criticos.
Puede la monitorizacion afectar al rendimiento de Odoo? Si se configura correctamente, el impacto es minimo. El agente de Zabbix consume menos del 1 % de CPU y RAM. Los dashboards de Grafana consultan metricas ya recopiladas, no generan carga adicional en Odoo. Evita ejecutar consultas pesadas de monitorizacion directamente contra la base de datos de produccion en horas punta.
Necesito un DBA para gestionar PostgreSQL? Para PYMEs con uso estandar de Odoo, las tareas basicas de mantenimiento como VACUUM, REINDEX y backups pueden gestionarse con conocimientos intermedios y scripts automatizados. Para optimizaciones avanzadas de consultas, particionamiento de tablas o problemas complejos de rendimiento con bloqueos, un DBA o un partner Odoo especializado es recomendable.
Cuantos workers debo configurar en Odoo?
La formula recomendada es (2 x nucleos de CPU) + 1. Para un servidor con 4 nucleos, configura 9 workers. Asigna al menos 1 worker exclusivo para cron jobs con el parametro max_cron_threads. Monitoriza el consumo de memoria de los workers y ajusta limit_memory_hard si observas reinicios frecuentes.
En IBERSYA somos especialistas en implementacion, mantenimiento y monitorizacion de Odoo para PYMEs. Configuramos monitorizacion proactiva con Zabbix para supervisar el servidor 24/7, dashboards personalizados en Grafana para que tengas visibilidad completa del estado de tu ERP, rutinas automatizadas de mantenimiento de PostgreSQL con scripts de VACUUM y REINDEX programados, y revision periodica de la configuracion de workers y longpolling para asegurar el rendimiento optimo. Si tu Odoo va lento, sufre caidas o simplemente quieres asegurar su estabilidad a largo plazo, contacta con nosotros para una revision de rendimiento sin compromiso.