DevOps y monitorización

Montray lleva las comprobaciones de estado de systemd a la bandeja del escritorio

Una nueva herramienta de código abierto utiliza un icono en la bandeja del sistema para alertar a los usuarios de Linux cuando fallan los servicios de systemd o las comprobaciones de salud personalizadas, evitando cortes silenciosos.

A system tray icon indicating healthy server status
Ilustración creada para este artículo

Traducido automáticamente del original en inglés.

El desarrollador dimonomid ha lanzado Montray, una utilidad ligera de monitorización diseñada para ofrecer visibilidad inmediata sobre los fallos de los servicios de systemd y las comprobaciones de salud personalizadas. Publicado en GitHub en octubre de 2026, esta herramienta aborda el problema común de los fallos silenciosos de servicios en segundo plano mostrando indicadores de estado directamente en la bandeja del sistema del escritorio. Permite a los usuarios de Linux monitorizar tanto máquinas locales como servidores remotos sin necesidad de desplegar complejas pilas de monitorización empresarial.

Qué ha ocurrido

El proyecto surgió de la frustración personal ante los fallos silenciosos en entornos autoalojados. En 2021, el desarrollador descubrió que su servicio Syncthing llevaba semanas averiado, lo que provocaba importantes problemas de sincronización de datos difíciles de resolver. Ocurrieron incidentes similares con Certbot, donde los fallos en la renovación de certificados pasaron desapercibidos hasta que los servicios expiraron. El problema principal era que, aunque systemd registraba estos fallos internamente, no proporcionaba ninguna alerta proactiva ni visible al usuario.

Montray resuelve esto dividiendo la funcionalidad en dos componentes: un servidor backend y una interfaz de usuario frontend. El montray-server, escrito en Go, se ejecuta como un servicio en segundo plano en la máquina objetivo. Realiza comprobaciones de salud y expone el estado actual mediante una API WebSocket de solo lectura. El montray-ui, construido con Rust y Slint, se ejecuta en el escritorio del usuario. Se conecta a una o más instancias del servidor, agrega sus estados y muestra un icono codificado por colores en la bandeja del sistema. Esta arquitectura permite que un único portátil monitorice simultáneamente múltiples servidores remotos.

La interfaz está diseñada para minimizar la carga cognitiva. Un icono verde indica que todos los sistemas están operativos. Un icono amarillo parpadeante señala una advertencia, como un fallo no crítico de un servicio, mientras que un icono rojo parpadeante indica un estado de error. Si la propia interfaz pierde la conexión con un servidor, el icono parpadea en magenta. Los usuarios pueden posponer (snooze) incidentes específicos si desean reconocerlos temporalmente sin resolver el problema subyacente de inmediato.

Detalles clave

  • Arquitectura de doble componente: El sistema separa la lógica de monitorización (montray-server en Go) de la lógica de visualización (montray-ui en Rust/Slint).
  • Monitorización remota vía SSH: La interfaz admite túneles SSH seguros para conectarse a servidores remotos, evitando la necesidad de exponer puertos de monitorización públicamente.
  • Comprobaciones personalizables: Más allá de los servicios de systemd, los usuarios pueden configurar comprobaciones arbitrarias de línea de comandos, como verificar el espacio en disco o la salud del RAID.
  • Indicadores de estado: El icono de la bandeja refleja el peor estado no pospuesto entre todos los servidores monitorizados, utilizando patrones parpadeantes en verde, amarillo, rojo o magenta.
  • Enfoque en Linux: Aunque la interfaz puede ejecutarse en Windows o macOS, la integración de systemd del servidor es específica de Linux, lo que limita las capacidades de monitorización local en otros sistemas operativos.
  • Código abierto: El proyecto está alojado en GitHub, con binarios precompilados disponibles para facilitar la instalación en distribuciones Linux.

Contexto

Systemd es el sistema de inicialización utilizado por la mayoría de las distribuciones Linux modernas para gestionar procesos y servicios del sistema. Cuando un servicio falla, systemd registra el evento en su diario (journal), pero no proporciona inherentemente una notificación de escritorio ni una pista visual al usuario. Para quienes alojan sus propios servicios y ejecutan aplicaciones críticas como herramientas de sincronización de archivos o servidores web, esta falta de retroalimentación inmediata puede conducir a tiempos de inactividad prolongados. Las soluciones tradicionales de monitorización como Prometheus o Nagios son potentes, pero a menudo requieren una configuración y mantenimiento significativos, lo cual resulta desproporcionado para despliegues de un solo usuario o a pequeña escala.

Montray cubre este vacío ofreciendo un enfoque de monitorización "local-first" (prioridad local). Aprovecha la infraestructura existente de systemd para detectar fallos, pero los presenta de una manera imposible de ignorar para un usuario de escritorio. Al utilizar tecnologías estándar como WebSockets para la transmisión de datos y SSH para el acceso remoto seguro, se integra fluidamente en los flujos de trabajo existentes de Linux sin requerir nuevos protocolos de red ni dependencias pesadas.

Por qué importa

Para equipos e individuos que gestionan su propia infraestructura de software, los fallos silenciosos suponen un riesgo importante. Un trabajo de copia de seguridad que deja de ejecutarse o un certificado TLS que no se renueva puede tener consecuencias graves si no se abordan rápidamente. Las herramientas de monitorización empresarial suelen ser excesivas para estos escenarios, requiriendo servidores dedicados y configuraciones complejas. Montray ofrece un punto intermedio: es lo suficientemente ligero para ejecutarse en la misma máquina que monitoriza, pero lo bastante robusto para manejar múltiples hosts remotos.

El diseño de la herramienta respeta las restricciones de privacidad y seguridad del autoalojamiento. Al utilizar túneles SSH para conexiones remotas, evita abrir puertos adicionales en firewalls o gestionar tokens de autenticación complejos para servicios externos. Esto lo hace especialmente adecuado para desarrolladores que gestionan servidores personales o infraestructuras de pequeñas empresas donde la simplicidad de seguridad es prioritaria. La capacidad de definir comprobaciones personalizadas también significa que puede monitorizar métricas de salud específicas de la aplicación, no solo estados de servicios a nivel de sistema.

Qué puedes hacer

  • Instalar localmente: Descarga los binarios precompilados de montray-server y montray-ui desde GitHub y sigue las instrucciones de configuración para monitorizar tu máquina Linux local.
  • Configurar comprobaciones de systemd: Edita el archivo /etc/montray-server.yml para especificar qué servicios de systemd deben generar advertencias o errores, como establecer los fallos de Syncthing como errores de alta prioridad.
  • Añadir servidores remotos: Configura montray-server en hosts remotos y ajusta tu montray-ui local para conectarse mediante túneles SSH editando el archivo ~/.config/montray-ui/montray-ui.yml.
  • Definir comprobaciones de salud personalizadas: Añade comandos ejecutables a la configuración del servidor para monitorizar el espacio en disco, la conectividad de bases de datos u otras métricas específicas de la aplicación.
  • Probar notificaciones: Provoca un fallo de prueba en un servicio no crítico para verificar que el icono de la bandeja cambia de color y que aparecen las notificaciones de escritorio según lo esperado.
  • Revisar la documentación: Consulta el repositorio de GitHub del proyecto para obtener guías detalladas sobre la configuración de seguridad, incluidas las opciones de autenticación TLS y token bearer para instalaciones sin SSH.

Más noticias

Todas las noticias