Skip to content
BotServBotServ
Producción continua24/7MonitoreoMantenimientoDisponibilidad

Agentes IA en producción 24/7

Ejecutar agentes IA en producción. Disponibilidad 24/7, monitoreo, mantenimiento y mejores prácticas.

S

schutzgeist

5 min read
Agentes IA en producción 24/7

Agentes de IA en operación continua

Qué cubre este artículo sobre operación continua

  • Cómo ejecutar agentes de IA 24/7.
  • Monitoreo, mantenimiento y manejo de errores para operación continua.
  • Cómo mantener agentes confiables y estables.
  • Ejemplos prácticos de agentes en operación continua.
  • Mejores prácticas para disponibilidad, rendimiento y mantenimiento.

Introducción: operación continua explicada

Operación continua significa: tu agente se ejecuta 24/7, procesa tareas de manera continua, se monitorea a sí mismo y se recupera automáticamente de errores. No solo “iniciar el agente”, sino “el agente funciona de forma confiable de manera permanente”.

Este artículo está dirigido a usuarios que desean ejecutar agentes en operación continua. Encontrarás conceptos básicos en Ejecutar agentes de IA localmente y Monitoreo.

¿Por qué necesito operación continua?

Imagina que tu agente debe procesar correos electrónicos las 24 horas. No solo cuando lo inicias, sino de forma permanente: de noche, durante los fines de semana, reiniciándose automáticamente si hay errores. Operación continua significa disponibilidad confiable y permanente.

Operación continua en breve

El agente se ejecuta 24/7 → El monitoreo supervisa → Si hay error: reinicio automático → Si todo va bien: continúa trabajando. Con registro de eventos, alertas y auto-recuperación para garantizar confiabilidad.

La idea central es: disponibilidad permanente sin intervención manual.

Para quién es este artículo

  • Equipos de producción que operan agentes de forma permanente.
  • DevOps que necesitan garantizar disponibilidad.
  • Empresas que desean automatización 24/7.
  • Usuarios que auto-alojan servidores con agentes confiables.

Conceptos clave

  • Monitoreo - Supervisión. Cuándo es útil: para operación continua.
  • Registro de eventos - Logging. Cuándo es útil: para depuración.
  • Ollama - Servidor de modelos. Cuándo es útil: para operación continua.
  • Docker - Para despliegue. Cuándo es útil: para reinicio automático.
  • Systemd - Gestión de servicios. Cuándo es útil: para inicio automático.

Arquitectura para operación continua

El agente se ejecuta (24/7)
    │
    ├─ Monitoreo: Health-checks cada 30s
    ├─ Registro: Todas las acciones se registran
    ├─ Alertas: Notificación en caso de errores
    └─ Auto-recuperación: Reinicio automático si hay falla
    │
    ▼
Política de reinicio Systemd / Docker
    │
    ├─ Si falla: reinicio automático
    ├─ Si OOM: reinicio con más memoria
    └─ Si se cuelga: timeout → reinicio

Configuración: Systemd para operación continua

# /etc/systemd/system/ki-agent.service
[Unit]
Description=KI-Agent
After=network.target ollama.service

[Service]
Type=simple
User=ki-agent
WorkingDirectory=/opt/ki-agent
ExecStart=/usr/bin/python3 /opt/ki-agent/agent.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

# Límites de recursos
MemoryMax=4G
CPUQuota=80%

[Install]
WantedBy=multi-user.target
# Activar
sudo systemctl enable ki-agent
sudo systemctl start ki-agent

Configuración: Docker para operación continua

version: "3.8"

services:
  agent:
    build: ./agent
    restart: always  # Reinicio automático en caso de error
    environment:
      - OLLAMA_URL=http://ollama:11434
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s
    deploy:
      resources:
        limits:
          memory: 4G
          cpus: '2.0'
        reservations:
          memory: 2G
          cpus: '1.0'
    networks:
      - agent_net

  ollama:
    image: ollama/ollama:latest
    restart: always
    volumes:
      - ollama_data:/root/.ollama
    networks:
      - agent_net

volumes:
  ollama_data:

networks:
  agent_net:
    driver: bridge

Monitoreo y alertas

import time
import logging
from datetime import datetime

class AgentMonitor:
    """Monitoreo para agentes"""

    def __init__(self):
        self.logger = logging.getLogger("agent")
        self.error_count = 0
        self.last_success = datetime.now()

    def check_health(self):
        """Health-check"""
        try:
            # Probar el agente
            response = requests.get("http://localhost:8000/health", timeout=5)
            if response.status_code == 200:
                self.last_success = datetime.now()
                self.error_count = 0
                return True
        except Exception as e:
            self.error_count += 1
            self.logger.error(f"Health check failed: {e}")

            if self.error_count > 3:
                self.alert("Agent unhealthy", e)
                return False

    def alert(self, message, error):
        """Enviar alerta"""
        # Email, Slack, PagerDuty, etc.
        send_notification(f"ALERT: {message}\nError: {error}")

    def run(self):
        """Loop de monitoreo"""
        while True:
            self.check_health()
            time.sleep(30)  # Cada 30 segundos

Manejo de errores

class ResilientAgent:
    """Agente con manejo de errores"""

    async def run_with_retry(self, task, max_retries=3):
        """Ejecutar tarea con reintentos"""
        for attempt in range(max_retries):
            try:
                result = await self.process(task)
                return result
            except Exception as e:
                self.logger.warning(f"Attempt {attempt + 1} failed: {e}")

                if attempt == max_retries - 1:
                    self.alert(f"Task failed after {max_retries} attempts", e)
                    raise

                await asyncio.sleep(2 ** attempt)  # Exponential backoff

    async def process(self, task):
        """Procesar tarea"""
        try:
            # Lógica del agente
            result = await self.execute(task)
            return result
        except OllamaError as e:
            # Error en Ollama: recargar modelo?
            await self.handle_ollama_error(e)
            raise
        except MemoryError as e:
            # OOM: usar menos contexto?
            await self.handle_oom(e)
            raise

Notas de seguridad

  • Monitoreo: El agente debe monitorearse a sí mismo. Generar alertas ante anomalías.
  • Límites de recursos: Los límites de memoria y CPU evitan que el agente consuma todos los recursos.
  • Reinicio automático: Reiniciar automáticamente ante errores, pero no de forma infinita.
  • Registro de eventos: Registrar todas las acciones para depuración y auditoría. Consulta Registro de eventos.
  • Backup: Respaldar configuración y datos regularmente. Consulta Backup.

Trampas comunes

  • Sin monitoreo: Sin monitoreo no sabrás cuándo falla el agente.
  • Memory leaks: Los agentes de larga ejecución pueden tener memory leaks. Se requiere monitoreo.
  • Sin reinicio automático: Si hay un error, el agente se detiene. Configura reinicio automático.
  • Demasiados reintentos: Si hay un error permanente, el agente se reinicia infinitamente. Usa límites de reintentos o circuit-breaker.
  • Sin alertas: Deberías recibir notificaciones de errores, no enterarte más adelante.

Enlaces relacionados

Puntos clave:

  • Operación continua: el agente funciona 24/7, se monitorea y se recupera automáticamente.
  • Monitoreo: health-checks, registro de eventos y alertas.
  • Reinicio automático: Systemd o Docker con restart=always.
  • Los límites de recursos previenen OOM.
  • Para producción: monitoreo y alertas son obligatorios.

Preguntas frecuentes

¿Qué es operación continua?

El agente se ejecuta 24/7 de forma continua, se monitorea a sí mismo y se recupera automáticamente de errores. No requiere intervención manual.

¿Cómo configuro operación continua?

Con Systemd (Restart=always) o Docker (restart=always). Además, monitoreo, registro de eventos y alertas para garantizar confiabilidad.

¿Qué debo monitorear?

Health-checks (¿se ejecuta el agente?), recursos (memoria, CPU), tasa de errores, tiempo de respuesta, última acción exitosa.

¿Qué ocurre si el agente falla?

Reinicio automático: Systemd o Docker reinician el agente. Si hay un error permanente: envía una alerta y no reinicies infinitamente.

¿Cuántos recursos necesito?

Por agente: 4-8 GB de RAM, 1-2 cores de CPU. Más Ollama: 4-8 GB de VRAM para el modelo. Para operación continua: planifica con margen.

¿Cómo mantengo el agente?

Actualizaciones periódicas (Ollama, código del agente), rotación de logs, backup y revisión de monitoreo. Para actualizaciones críticas: despliegues progresivos sin tiempo de inactividad.

¿Cuánto cuesta la operación continua?

Electricidad: 30-80 €/mes para el servidor. Software: gratuito (código abierto). Sin costos en la nube, sin licencias.

Referencias y lecturas adicionales

Volver al blog
Share:

Entradas relacionadas