Monitor centralizado de ejecuciones de automatizaciones: scripts PowerShell, runbooks Azure Automation y tareas programadas. Los scripts reportan su estado vía cliente Python/PowerShell.
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.
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.
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.
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).
Un script registra su ejecución completa en el monitor con tres llamadas al módulo cliente.
Start-Execution -Name "script-name" (PowerShell) o client.start("script-name") (Python). El monitor registra inicio en SQLite.Complete-Execution -Status ok o con error: Complete-Execution -Status error -Message "descripción".| Módulo | Descripció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 |
El módulo PowerShell está instalado globalmente en la máquina Windows donde corren los scripts automatizados.
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
}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.
deploy.ps1 estándar{
"port": 8084,
"host": "0.0.0.0",
"db_path": "../db/automations.db",
"retention_days": 30,
"notify": {
"email": "[email protected]"
}
}