← Volver al índice
⚙ Scripts & Runbooks — Monitor de ejecuciones

Automations Monitor

Monitor centralizado de ejecuciones de automatizaciones: scripts PowerShell, runbooks Azure Automation y tareas programadas. Los scripts reportan su estado vía cliente Python/PowerShell.

🌟 Python 3 + Flask + Waitress
💾 SQLite WAL
🌐 Puerto 8084
🏠 WinSW Service
En producción
30d
Retención de historial
PS1
Módulo PowerShell cliente
Py
Librería cliente Python
8084
Puerto del servidor

Cómo funciona

Servidor Flask central al que los scripts reportan su estado de ejecución. Los clientes pueden ser cualquier script Python o PowerShell que importe el módulo cliente. Auto-purge de registros con más de 30 días.

💾 Base de datos

SQLite con auto-purge. Retención de 30 días configurable. Registra inicio, fin, duración, estado (ok/error/warning) y mensaje de cada ejecución.

⚙ Clientes de reporte

Dos clientes disponibles: monitor_client.py para scripts Python y AutomationsMonitor.psm1 para PowerShell. Los scripts importan el módulo y llaman a start/finish en cada ejecución.

🔔 Notificador

backend/notifier.py envía alertas cuando una ejecución falla o no se registra en el tiempo esperado (detección de scripts que no arrancan).

Flujo de reporte de un script

Un script registra su ejecución completa en el monitor con tres llamadas al módulo cliente.

1
Script arranca — llama a Start-Execution -Name "script-name" (PowerShell) o client.start("script-name") (Python). El monitor registra inicio en SQLite.
2
Script ejecuta su lógica — cualquier duración. El monitor simplemente espera.
3
Script termina OKComplete-Execution -Status ok o con error: Complete-Execution -Status error -Message "descripción".
4
Monitor registra resultado — duración, estado, mensaje. Visible en el dashboard web.
5
Si hay error o timeout — el notificador dispara alerta al canal configurado (email/Teams).

Módulos del proyecto

MóduloDescripción
run.py Entry point. Arranca Flask con Waitress en el puerto 8084
backend/app.py Flask factory: rutas del dashboard web y API de ingest
backend/db.py SQLite WAL: tablas de ejecuciones, auto-purge de registros >30 días
backend/notifier.py Notificaciones de estado: email y/o Teams según config
client/monitor_client.py Librería Python para scripts cliente: start(), finish(), context manager
AutomationsMonitor.psm1 Módulo PowerShell instalado en C:\idealista\modules\: Start-Execution, Complete-Execution

Uso desde PowerShell

El módulo PowerShell está instalado globalmente en la máquina Windows donde corren los scripts automatizados.

🔎 Importar y usar

Import-Module AutomationsMonitor $execId = Start-Execution -Name "sync-ad-users" ` -Description "Sincronización diaria AD" try { # ... lógica del script ... Complete-Execution -Id $execId -Status ok } catch { Complete-Execution -Id $execId ` -Status error -Message $_.Exception.Message }

📁 Instalación del módulo

El módulo AutomationsMonitor.psm1 debe estar copiado en C:\idealista\modules\ (o en la ruta PSModulePath del sistema) en el servidor donde corren los scripts.

Configura la URL del servidor en el módulo (o vía variable de entorno) para que apunte a http://<host>:8084.

Despliegue

🏠 Servicio WinSW

  • Servicio Windows con WinSW
  • Puerto 8084 accesible desde todos los servidores que ejecutan scripts
  • Detrás de App Proxy Entra ID para el dashboard web
  • Deploy con deploy.ps1 estándar

📄 config/config.json

{ "port": 8084, "host": "0.0.0.0", "db_path": "../db/automations.db", "retention_days": 30, "notify": { "email": "[email protected]" } }