Saltar al contenido principal

Solución de Problemas On-Premise

Esta guía proporciona pasos diagnósticos de Nivel 1 (L1) para solucionar problemas en despliegues On-Premise de EKB. Estos pasos ayudan a identificar problemas comunes con contenedores, bases de datos, servicios y recursos del sistema.

aviso

Requisitos previos: Necesita acceso SSH a la VM/servidor del cliente donde está desplegado EKB, y permisos apropiados para ejecutar comandos Docker y acceder a registros de contenedores.

Verificaciones de Estado de Contenedores​

Verificar Estado de Todos los Contenedores​

Primero, verifique qué contenedores están ejecutándose y su estado de salud:

# Verificar estado de todos los contenedores
docker ps -a

# Verificar contenedores con estado de salud
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Health}}"

# Verificar estado de un contenedor específico
docker ps -a | grep <container_name>

Contenedores Esperados:

  • web - Aplicación frontend
  • api o fastapi_backend - Servidor API backend
  • worker o celery_worker - Worker(s) de Celery
  • redis - Caché Redis
  • rabbitmq - Cola de mensajes RabbitMQ
  • supabase-studio - Supabase Studio
  • supabase-kong - API Gateway Kong
  • supabase-auth - Servicio de autenticación
  • supabase-db o postgres - Base de datos PostgreSQL
  • Otros servicios de Supabase (almacenamiento, meta, etc.)

Qué Verificar:

  • Todos los contenedores deben estar en estado "Up"
  • Ningún contenedor debe estar en estado "Restarting" o "Exited"
  • Las verificaciones de salud deben mostrar "healthy" donde corresponda

Reiniciar Contenedores Fallidos​

Si los contenedores están detenidos o reiniciándose:

# Reiniciar un contenedor específico
docker restart <container_name>

# Reiniciar todos los contenedores
docker compose restart

# Reiniciar un servicio específico
docker compose restart <service_name>

Registros del Contenedor Backend​

Verificar Registros del Contenedor API​

Los registros del contenedor API backend contienen información crítica sobre errores, conexiones de base de datos y problemas de servicio:

# Ver registros recientes (últimas 100 líneas)
docker logs --tail 100 api

# O para fastapi_backend
docker logs --tail 100 fastapi_backend

# Seguir registros en tiempo real
docker logs -f api

# Ver registros con marcas de tiempo
docker logs -t api

# Ver registros desde un momento específico
docker logs --since 30m api

# Ver registros entre marcas de tiempo
docker logs --since "2024-01-01T00:00:00" --until "2024-01-01T23:59:59" api

Qué Buscar:

  • Errores de conexión a base de datos
  • Fallos de conexión Redis
  • Problemas de conexión RabbitMQ
  • Errores de autenticación
  • Errores de endpoints API (500, 503, etc.)
  • Errores de importación/exportación
  • Errores de procesamiento de Base de Conocimiento
  • Fallos de tareas de workers

Verificar Registros del Contenedor Worker​

Los contenedores worker manejan tareas en segundo plano (procesamiento de KB, embeddings, etc.):

# Ver registros del worker
docker logs --tail 100 worker

# O para celery_worker
docker logs --tail 100 celery_worker

# Ver todas las instancias de worker
docker ps | grep worker
docker logs <worker_container_name>

Qué Buscar:

  • Errores de ejecución de tareas
  • Problemas de memoria
  • Errores de tiempo de espera agotado
  • Errores de conexión a base de datos en workers
  • Fallos de sincronización de Base de Conocimiento
  • Errores de generación de embeddings

Verificar Registros del Contenedor Web​

Los registros del contenedor frontend pueden revelar problemas de conexión con la UI y la API:

# Ver registros del contenedor web
docker logs --tail 100 web

# Seguir registros
docker logs -f web

Qué Buscar:

  • Errores de compilación
  • Fallos de conexión API
  • Problemas de variables de entorno
  • Errores de enlace de puertos

Estado de la Base de Datos​

Verificar Estado de PostgreSQL/Supabase Database​

# Ver estado del contenedor de base de datos
docker ps | grep -E "(db|postgres|supabase-db)"

# Ver registros del contenedor de base de datos
docker logs --tail 100 supabase-db

# O para el contenedor postgres
docker logs --tail 100 postgres

# Conectar a la base de datos (si psql está disponible)
docker exec -it supabase-db psql -U postgres

# Verificar conexiones de base de datos
docker exec supabase-db psql -U postgres -c "SELECT count(*) FROM pg_stat_activity;"

# Verificar tamaño de la base de datos
docker exec supabase-db psql -U postgres -c "SELECT pg_size_pretty(pg_database_size('postgres'));"

Qué Verificar:

  • El contenedor de base de datos está ejecutándose
  • No hay errores de conexión en los registros
  • La base de datos no está llena (verifique el espacio en disco)
  • Las conexiones activas están dentro de los límites
  • No hay consultas de larga ejecución bloqueando operaciones

Verificar Conectividad de Base de Datos desde la API​

# Probar conexión de base de datos desde el contenedor API
docker exec api python -c "
import os
from sqlalchemy import create_engine
try:
engine = create_engine(os.environ.get('DATABASE_URL'))
conn = engine.connect()
print('Database connection successful')
conn.close()
except Exception as e:
print(f'Database connection failed: {e}')
"

Verificar Migraciones de Base de Datos​

# Verificar si las migraciones están actualizadas
docker exec api alembic current

# Ver historial de migraciones
docker exec api alembic history

# Ver migraciones pendientes
docker exec api alembic heads

Estado de Redis​

Verificar Contenedor Redis​

# Ver estado del contenedor Redis
docker ps | grep redis

# Ver registros de Redis
docker logs --tail 100 redis

# Probar conexión Redis
docker exec redis redis-cli ping

# Debería devolver: PONG

# Ver información de Redis
docker exec redis redis-cli info

# Ver uso de memoria de Redis
docker exec redis redis-cli info memory

# Ver clientes conectados
docker exec redis redis-cli info clients

Qué Verificar:

  • Redis responde al ping
  • El uso de memoria está dentro de los límites
  • No hay errores de conexión
  • No hay errores de expulsión (memoria llena)

Probar Redis desde el Contenedor API​

# Probar conexión Redis desde la API
docker exec api python -c "
import redis
import os
try:
r = redis.Redis(host='redis', port=6379, decode_responses=True)
r.ping()
print('Redis connection successful')
except Exception as e:
print(f'Redis connection failed: {e}')
"

Estado de RabbitMQ​

Verificar Contenedor RabbitMQ​

# Ver estado del contenedor RabbitMQ
docker ps | grep rabbitmq

# Ver registros de RabbitMQ
docker logs --tail 100 rabbitmq

# Ver gestión de RabbitMQ (si es accesible)
# Acceder: http://<server-ip>:15672
# Credenciales predeterminadas: user/password

Qué Verificar:

  • El contenedor está ejecutándose
  • No hay errores de conexión
  • Las colas están procesando mensajes
  • No hay acumulación de mensajes

Verificar RabbitMQ desde la API​

# Probar conexión RabbitMQ
docker exec api python -c "
import pika
try:
connection = pika.BlockingConnection(
pika.ConnectionParameters('rabbitmq', 5672, '/',
pika.PlainCredentials('user', 'password'))
)
print('RabbitMQ connection successful')
connection.close()
except Exception as e:
print(f'RabbitMQ connection failed: {e}')
"

Recursos del Sistema​

Verificar Espacio en Disco​

El espacio bajo en disco puede causar problemas de base de datos, almacenamiento y contenedores:

# Ver uso general del disco
df -h

# Ver uso del disco para volúmenes Docker
docker system df

# Ver uso de un volumen específico
docker volume inspect <volume_name>

# Ver tamaños de directorios
du -sh /var/lib/docker/volumes/*
du -sh ./supabase/docker/volumes/*

# Ver uso del disco dentro del contenedor (para base de datos)
docker exec supabase-db df -h

Qué Verificar:

  • La partición raíz tiene espacio suficiente (se recomienda >20% libre)
  • Los volúmenes Docker no están llenos
  • El directorio de datos de la base de datos tiene espacio
  • El almacenamiento de Supabase tiene espacio

Verificar Uso de Memoria​

# Ver memoria del sistema
free -h

# Ver uso de memoria de contenedores
docker stats --no-stream

# Ver memoria de un contenedor específico
docker stats <container_name> --no-stream

Qué Verificar:

  • El sistema tiene memoria disponible
  • Los contenedores no están alcanzando los límites de memoria
  • No hay muertes OOM (Out of Memory) en los registros

Verificar Uso de CPU​

# Ver uso de CPU
top
# o
htop

# Ver uso de CPU de contenedores
docker stats --no-stream

Conectividad de Red​

Verificar Red de Contenedores​

# Ver red Docker
docker network ls

# Inspeccionar configuración de red
docker network inspect <network_name>

# Verificar si los contenedores pueden comunicarse
docker exec api ping -c 3 redis
docker exec api ping -c 3 rabbitmq
docker exec api ping -c 3 supabase-db

Verificar Disponibilidad de Puertos​

# Verificar si los puertos están en uso
netstat -tulpn | grep -E "(3001|8001|6379|5672|5432|8000)"

# O usando ss
ss -tulpn | grep -E "(3001|8001|6379|5672|5432|8000)"

# Verificar puerto desde el contenedor
docker exec api curl -I http://localhost:8001/health

Variables de Entorno​

Verificar Configuración de Entorno​

# Ver variables de entorno de un contenedor
docker exec api env | grep -E "(DATABASE|REDIS|RABBITMQ|API)"

# Ver archivos .env (si son accesibles)
cat ./env/.env.server | grep -v "PASSWORD\|SECRET\|KEY" # Excluir datos sensibles
cat ./env/.env.web | grep -v "PASSWORD\|SECRET\|KEY"

# Ver entorno desde docker-compose
docker compose config

Qué Verificar:

  • Las cadenas de conexión a la base de datos son correctas
  • Los nombres de host de Redis y RabbitMQ son correctos
  • Las URL de la API están configuradas correctamente
  • Las variables de entorno requeridas están establecidas
  • No hay errores tipográficos en los nombres de variables

Permisos de Archivos​

Verificar Permisos de Archivos y Directorios​

# Verificar permisos en directorios clave
ls -la ./alignment-project-server
ls -la ./ai-content-creator
ls -la ./supabase/docker/volumes

# Verificar permisos del socket Docker
ls -la /var/run/docker.sock

# Verificar archivos de certificado (si usa HTTPS)
ls -la ./certs/

Qué Verificar:

  • Los directorios de la aplicación son legibles
  • El socket Docker tiene permisos correctos
  • Los montajes de volumen tienen permisos adecuados
  • Los archivos de certificado son accesibles

Verificaciones Específicas por Servicio​

Problemas de Base de Conocimiento​

Si la Base de Conocimiento no se actualiza o procesa:

# Ver registros del worker para procesamiento de KB
docker logs --tail 200 worker | grep -i "knowledge\|kb\|embedding"

# Ver problemas del modelo de embeddings
docker logs api | grep -i "embedding\|model"

# Ver almacenamiento de Supabase
docker logs supabase-storage

# Ver límites de carga de archivos
docker exec supabase-db psql -U postgres -c "
SELECT name, file_size_limit
FROM storage.buckets;
"

Problemas de Chat/Agente​

# Ver registros de API para errores de agentes
docker logs --tail 200 api | grep -i "agent\|chat\|llm"

# Ver registros de worker para tareas de agentes
docker logs --tail 200 worker | grep -i "agent\|chat"

Problemas de Autenticación​

# Ver registros del servicio de autenticación
docker logs --tail 100 supabase-auth

# Verificar base de datos para problemas de autenticación
docker exec supabase-db psql -U postgres -c "
SELECT * FROM auth.users LIMIT 5;
"

Patrones de Errores Comunes​

Errores de Conexión a Base de Datos​

Síntomas:

  • Errores de "Connection refused"
  • Errores de "Too many connections"
  • Errores de tiempo de espera agotado

Pasos Diagnósticos:

  1. Verificar que el contenedor de base de datos esté ejecutándose: docker ps | grep db
  2. Verificar registros de la base de datos: docker logs supabase-db
  3. Verificar límites de conexión: docker exec supabase-db psql -U postgres -c "SHOW max_connections;"
  4. Verificar conexiones activas: docker exec supabase-db psql -U postgres -c "SELECT count(*) FROM pg_stat_activity;"
  5. Verificar DATABASE_URL en las variables de entorno

Errores de Conexión Redis​

Síntomas:

  • "Connection refused" a Redis
  • Fallos de caché
  • Problemas de sesión

Pasos Diagnósticos:

  1. Verificar contenedor Redis: docker ps | grep redis
  2. Probar Redis: docker exec redis redis-cli ping
  3. Verificar registros de Redis: docker logs redis
  4. Verificar el nombre de host Redis en las variables de entorno

Fallos de Tareas de Workers​

Síntomas:

  • Las tareas no se completan
  • La Base de Conocimiento no se sincroniza
  • Trabajos en segundo plano fallan

Pasos Diagnósticos:

  1. Verificar registros del worker: docker logs worker
  2. Verificar estado del contenedor worker: docker ps | grep worker
  3. Verificar colas RabbitMQ: Acceder a la interfaz de gestión de RabbitMQ
  4. Verificar problemas de memoria: docker stats worker

Problemas de Almacenamiento/Carga de Archivos​

Síntomas:

  • Las cargas de archivos fallan
  • Errores de "File too large"
  • Cuota de almacenamiento excedida

Pasos Diagnósticos:

  1. Verificar espacio en disco: df -h
  2. Verificar registros de almacenamiento de Supabase: docker logs supabase-storage
  3. Verificar límites de tamaño de archivo en la configuración de Supabase
  4. Verificar configuración del bucket de almacenamiento

Script de Diagnóstico Rápido​

Cree un script de diagnóstico para ejecutar todas las verificaciones a la vez:

#!/bin/bash
echo "=== Diagnóstico On-Premise de EKB ==="
echo ""
echo "1. Estado de Contenedores:"
docker ps --format "table {{.Names}}\t{{.Status}}"
echo ""
echo "2. Espacio en Disco:"
df -h | grep -E "(Filesystem|/dev/)"
echo ""
echo "3. Memoria:"
free -h
echo ""
echo "4. Redis:"
docker exec redis redis-cli ping 2>/dev/null || echo "Redis no responde"
echo ""
echo "5. Base de Datos:"
docker exec supabase-db psql -U postgres -c "SELECT version();" 2>/dev/null || echo "Base de datos no responde"
echo ""
echo "6. Errores Recientes de API (últimas 20 líneas):"
docker logs --tail 20 api 2>/dev/null | grep -i error || echo "No hay errores recientes"
echo ""
echo "=== Diagnóstico Completo ==="

Guarde como diagnostics.sh, hágalo ejecutable: chmod +x diagnostics.sh, y ejecute: ./diagnostics.sh

Información de Escalación​

Al escalar al soporte Nivel 2, proporcione:

  1. Estado de Contenedores: Salida de docker ps -a
  2. Registros Recientes: Últimas 100-200 líneas de los contenedores relevantes
  3. Recursos del Sistema: Salida de df -h y free -h
  4. Mensajes de Error: Mensajes de error específicos de los registros
  5. Configuración: Nombres de variables de entorno (no valores) que están configuradas
  6. Cronología: Cuándo comenzó el problema
  7. Impacto: Qué funcionalidad se ve afectada

Contactar Soporte: support@automationanywhere.com

Recursos Adicionales​