Orbit Watchdog
Vigila tus bases de datos y sitios, y los recupera antes de que tus clientes lo noten.
Resumen
Orbit Watchdog es una app para Windows que hice con Electron y Node.js. Vigila PostgreSQL, SQL Server, sitios web, espacio en disco y backups. Cuando algo deja de responder reintenta, reinicia el servicio y confirma que volvió, y si no lo puede arreglar, avisa al equipo.
El problema
En Orbit, donde trabajo como desarrollador, teníamos un problema que se repetía. Postgres se caía y no teníamos forma de saberlo. Pasaban horas hasta que nos dábamos cuenta, y casi siempre era porque llamaba un cliente para decirnos que algo no andaba. Con el tiempo entendí que no nos pasaba solo a nosotros. Mucha gente que mantiene servidores vive lo mismo.
Qué hice
Arranqué con una app chica en la bandeja de Windows que vigilaba una sola base PostgreSQL y reiniciaba el servicio cuando dejaba de responder. De ahí creció hasta ser un monitor completo. Cada sistema es un monitor con su propio chequeo: una consulta en PostgreSQL y SQL Server, código de respuesta, texto esperado y latencia en sitios web, espacio libre en discos y antigüedad del último archivo en backups. Cuando un monitor agota los reintentos puede reiniciar un servicio de Windows, ejecutar un comando o solo avisar. Las alertas salen por mail y por webhooks a Microsoft Teams, Slack, Google Chat y Discord. Cada monitor guarda su disponibilidad hora por hora, y la app arma reportes en PDF con PDFKit que se pueden mandar solos por mail todos los meses.
Lo más importante
- Cinco tipos de monitor: PostgreSQL, SQL Server, HTTP, espacio en disco y backups
- Sin límite de monitores: vigila tantos servicios como configures
- Recuperación automática: reintenta, reinicia el servicio o corre un comando, y confirma que volvió
- Freno de reinicios: después de 3 acciones automáticas en una hora deja de insistir y pide intervención
- Alertas por mail con Nodemailer y webhooks para Teams, Slack, Google Chat y Discord
- Historial de disponibilidad por hora y reportes en PDF por mes o por período
Desafíos
Reiniciar servicios pide permisos de administrador
Reiniciar un servicio de Windows no es algo que cualquier programa pueda hacer. Una app de escritorio corriendo en una sesión común no tenía permiso para arreglar justo lo que acababa de detectar.
No estaba mirando cuando más falta hacía
Este apareció en la práctica. Cuando el servidor se reiniciaba, la app no arrancaba hasta que alguien iniciaba sesión. O sea que después de un reinicio, el momento más delicado, nadie estaba vigilando. Los dos problemas los resolví de la misma forma: convertí el monitoreo en un servicio de Windows. Ahora arranca junto con el servidor, corre con los permisos que necesita y sigue funcionando aunque nadie entre a la máquina.
Un mismo núcleo, dos formas de correrlo
Para llegar ahí separé el núcleo de monitoreo de la interfaz, así el mismo código Node.js corre dentro de la app de Electron o solo, como servicio. La app de escritorio quedó como el panel desde donde ves y configurás todo, y se comunica con el servicio por un canal que solo pueden usar los administradores. Cerrar la app ya no corta el monitoreo.
Galería



Resultados
- El monitoreo arranca con el servidor y sigue andando aunque nadie inicie sesión
- Corre 24/7 en producción en Orbit y detecta una caída en un intervalo de chequeo (1 minuto por defecto)
¿Tenés un proyecto o una búsqueda en mente?
HablemosSiguiente proyecto
App de escritorio (Electron) + servidor de imágenes
Sistema de gestión de tótems de autoservicio
App en Electron para gestionar productos, precios e imágenes en más de 150 terminales de autoservicio.