Network UPS Tools (NUT) es un completo programa para sistemas operativos basados en Unix y Linux para administrar y gestionar correctamente un Sistema de Alimentación Ininterrumpido (SAI). La mayoría de fabricantes incorporan un software capaz de monitorizar el estado del SAI y enviar avisos por email, también permite ejecutar el sistema como «maestro» de tal forma que otros ordenadores se conecten a él como «esclavos» para leer el estado del SAI. Tanto los equipos maestros como los esclavos, al leer el estado del SAI se pueden configurar para que se apaguen de forma automática si hay un corte de luz.
En este manual se pretende configurar desde cero el programa NUT en una Raspberry Pi con sistema operativo Raspbian. El punto fuerte de utilizar este sistema en lugar de un ordenador es el bajo consumo de energía y permite una gran configurabilidad como por ejemplo avisos por email. NUT también permite que ordenadores «esclavos» se conecten para leer el estado del mismo. Esta herramienta en particular tiene una amplia compatibilidad con fabricantes y modelos de dispositivos, por lo que, en un principio, no deberías tener problemas para comenzar a usar NUT en tu equipo. Además, hay que tener en cuenta que se trata de un software de código abierto licenciado bajo la GPL.
Rendimiento de Network UPS Tools
Está solución resulta muy robusta y versátil, para poder gestionar y monitorizar dispositivos UPS en sistemas UNIX y Linux. Pero para poder realizar una evaluación de su rendimiento, lo mejor es analizar diferentes aspectos que con muy importantes. Y el primero de ellos es el consumo de recursos, donde es conocido por ser bastante ligero. Utilizar esta herramienta no debería suponer una disminución significativa del rendimiento de tu sistema cuando se ejecuta. Incluso en hardware más antiguo, no debería tener mucho problema. Lo cual es beneficioso para su estabilidad y confiabilidad, donde se trata de una solución madura y bien mantenida. Resulta muy estable en la gran mayoría de las configuraciones, pero si está correctamente configurado, puede ser una solución muy buena.
En cuanto a flexibilidad y escalabilidad también nos sorprende. Y es que tiene la capacidad de administrar diferentes UPSs, y con configuraciones bastante complejas. Esto es porque se puede escalar desde pequeñas configuraciones de tan solo una UPS, a sistemas más grandes con diferentes UPS. Esto nos podría llevar a pensar en aumentos de latencia, pero en este caso suele ser muy rápido y bastante confiable. Ya que estas respuestas, pueden ser críticas para garantizar que se toman las acciones adecuadas en los tiempos oportunos. El problema que podemos tener en cuanto a las configuraciones, es on su propia interfaz. Esta no es la más sencilla e intuitiva del mundo, por lo cual requiere cierta curva de aprendizaje para poder tenerla totalmente controlada.
Por otro lado, la integración don los sistemas es muy buena. NUT se integra con la gran mayoría de los sistemas operativos actuales y entornos Linux y UNIZ. Por lo cual se puede instalar en sistemas de inicialización como Systemd o SysVinit. Siendo posible también la instalación de sistemas de monitorización y notificación de posibles incidencias que se puedan producir. Esto lo podemos trasladar al hardware, donde NUT cuenta con un amplio soporte para dispositivos UPS diferentes. En cambio, siempre es buena idea verificar la compatibilidad de los modelos específicamente, antes de que realicemos alguna instalación.
Instalación
Lo primero que tenemos que hacer es instalar el programa. Además, hay que tener en cuenta que está disponible en los propios repositorios de paquetes de estos sistemas operativos.
En cualquier caso, hay que tener claro que el primer paso a seguir durante el proceso de instalación apenas te llevará unos segundos, ya que únicamente hay que usar el siguiente comando en cuestión para iniciar con la instalación:
sudo apt-get install nut
Una vez que ya está instalado NUT, entonces es el momento de seguir con el proceso de configuración. Para ello, en RedesZone os explicaremos cada uno de los pasos a seguir para que no tengas dudas si es la primera vez que vas a hacer uso de este programa tan completo para sistemas operativos basados en Linux y Unix. Eso sí, hay que comprobar que se ha creado sin inconvenientes tanto el usuario como el grupo nut. Y es que de no ser así, habría que hacerlo de manera manual.
Editar archivos de configuración
Una vez que se ha instalado, nos tenemos que ir al directorio /etc/nut/ donde se encuentran todos los archivos .conf para proceder con su configuración.
Nosotros hemos probado esta configuración con un SAI Salicru SPS SOHO+ 1400VA. A continuación os vamos a poner el contenido de nuestros archivos para que la Raspberry actúe como maestro y envíe notificaciones por email en caso de problemas. Tan sólo debemos editarlos en modo superusuario (root) con nuestro editor de archivos favorito (vi, vim, nano o cualquier otro).
Archivo nut.conf
MODE=standalone
Archivo ups.conf
[salicru]
driver = blazer_usb
port = auto
desc = "SAI Salicru"
Archivo upsd.conf
MAXAGE 15
MAXCONN 1024
LISTEN 127.0.0.1 3493
LISTEN ::1 3493
Archivo upsmon.conf
MONITOR salicru@localhost 1 nonmaster contraseña master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /bin/upssched-cmd
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+WALL+EXEC
NOTIFYFLAG COMMBAD SYSLOG+WALL+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC
NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC
NOTIFYFLAG NOPARENT SYSLOG+WALL+EXEC
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Archivo upsd.users
[nonmaster]
password = contraseña
actions = set
instcmds = ALL
upsmon master
Archivo upssched.conf
CMDSCRIPT /bin/upssched-cmd
PIPEFN /var/run/nut/upssched/upssched.pipe
LOCKFN /var/run/nut/upssched/upssched.lock
AT COMMOK * EXECUTE notify
AT COMMBAD * EXECUTE notify
AT REPLBATT * EXECUTE notify
AT NOCOMM * EXECUTE notify
AT FSD * EXECUTE forced-shutdown
AT NOPARENT * EXECUTE notify
AT SHUTDOWN * EXECUTE notify
AT ONLINE * CANCEL-TIMER shutdown
AT ONLINE * EXECUTE resume
AT ONBATT * START-TIMER shutdown 60000
AT ONBATT * EXECUTE shutdown-warning
AT LOWBATT * START-TIMER shutdown
AT LOWBATT * EXECUTE shutdown-warning
Hasta aquí llegaría la configuración de los archivos fundamentales para que el sistema operativo reconozca el SAI correctamente y comience a funcionar. Sin embargo, hay un archivo extra ubicado llamado upssched-cmd ubicado en /bin/ que se encarga de realizar las acciones configuradas en los anteriores archivos, como por ejemplo ejecutar el apagado del servidor en caso de que estemos bajos de batería o notificar en el syslog los diferentes eventos que están ocurriendo en el SAI.
La ruta de este archivo (que es fundamental para una buena configuración) está en /bin/upssched-cmd, procedemos a editarlo con nuestro editor de archivos favorito con el siguiente contenido:
Archivo upssched-cmd
#!/bin/sh
case "${NOTIFYTYPE}" in
ONLINE)
_notifymessage="UPS ${UPSNAME} - Equipo funcionando con la luz electrica";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;;
ONBATT)
_notifymessage="UPS ${UPSNAME} - Corte en el suministro electrico, el sistema funciona con bateria. CUIDADO";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;;
LOWBATT)
_notifymessage="UPS ${UPSNAME} - Bateria baja";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;;
FSD)
_notifymessage="UPS ${UPSNAME}: - Forzando el apagado del equipo";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;;
COMMOK)
_notifymessage="La comunicacion con el UPS ${UPSNAME} se ha establecido correctamente";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;;
COMMBAD)
_notifymessage="La comunicacion con el UPS ${UPSNAME} se ha PERDIDO, ERROR.";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;
upsdrvctl start salicru;;
SHUTDOWN)
_notifymessage="Finalizando sesion y apagando el equipo.";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;;
REPLBATT)
_notifymessage="UPS ${UPSNAME} - The battery needs to be replaced!";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;;
NOCOMM)
_notifymessage="UPS ${UPSNAME} - El UPS no esta disponible";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;
upsdrvctl start salicru;;
NOPARENT)
_notifymessage="No se puede apagar automaticamente el servidor, se necesita
intervencion del administrador.";
echo ${_notifymessage} | mail -s "SAI" destinatario_email@gmail.com;;
esac
case "${1}" in
shutdown-warning)
_message="${_notifymessage}.
Apagado inminente en ${_shutdowntimer} segundos.";;
shutdown)
_message="${_notifymessage}.
Se inicia el apagado del equipo.";
shutdown -p now ${_message};;
resume)
_message="${_notifymessage}.
Apagado cancelado.";;
forced-shutdown)
_message="${_notifymessage}.
Apagado forzado inminente en 100 minutos.";
shutdown -h 100;;
notify)
_message="${_notifymessage}";;
*)
_message="Unknown command: ${1}";
esac
# Write message to syslo
logger -t upssched-cmd "${_message}"
Comprobar funcionamiento y mirar logs
Después de realizar estas acciones, es recomendable reiniciar el sistema operativo para comprobar que todo funciona correctamente. Hay un comando muy útil para comprobar si los drivers y el sistema en Raspbian funcionan correctamente:
upsdrvctl start salicru
Todos los logs se guardan en syslog, por tanto podemos hacer un simple tail para obtener las últimas líneas de información del sistema para detectar problemas en el arranque u otros avisos:
tail /var/log/syslog
Como habéis podido observar en este último archivo de configuración, hemos utilizado el servidor SMTP que hemos instalado en Raspbian para enviar los avisos por email.
Si usamos clientes de NUT en los ordenadores esclavos como por ejemplo WinNUT, podremos leer el estado del SAI y apagar los diferentes ordenadores. Esta configuración que os proponemos, la hemos probado y funciona correctamente, no obstante, es posible que tengáis algún tipo de problema por los drivers u otros motivos, os invitamos a ponernos un comentario si tenéis problemas e intentaremos echaros una mano.
Ventajas e inconvenientes de NUT
Aunque NUT es un programa muy usado para administrar los Sistemas de Alimentación Ininterrumpido, tiene algunas ventajas y desventajas que debes tener en cuenta antes de usarla en un entorno de red. Y es que se trata de una serie de puntos clave con los que cualquier usuario puede conocer con mayor detalle las principales características que presenta este software:
Ventajas
Para entender más cerca lo que ofrece este software de código abierto, no hay duda de que hay que conocer los principales beneficios que presente. Por tanto, las ventajas a tener en cuenta son las siguientes:
- Monitorización remota: NUT permite monitorear el estado de los dispositivos SAI desde cualquier lugar de la red, lo que facilita la supervisión centralizada de varios sistemas.
- Gestión centralizada: Con NUT, es posible administrar varios SAI desde una sola interfaz de administración, lo que simplifica la gestión y reduce la necesidad de un software específico para cada dispositivo.
- Notificaciones: NUT puede enviar notificaciones automáticas por correo electrónico o mensajes de texto en caso de circunstancias importantes, como cortes de energía, sobrecargas o fallos en la batería. Esto ayuda a los administradores a tomar medidas rápidas para proteger los sistemas.
- Automatización de acciones: Permite configurar acciones automáticas en respuesta a situaciones específicas, como apagar servidores de manera segura en caso de un corte prolongado de energía para evitar la pérdida de datos.
- Compatibilidad: NUT es compatible con una amplia gama de dispositivos SAI de diferentes fabricantes, lo que da flexibilidad y opciones a los usuarios al elegir hardware para sus Sistemas de Alimentación Ininterrumpida.
Inconvenientes
Ahora bien, por más que el listado de ventajas ya te deje tener una idea de lo que supone el uso de esta herramienta, lo cierto es que no hay que pasar por alto los diferentes inconvenientes que presenta. Por esto mismo, aquí están las principales desventajas:
- Configuración inicial: Configurar correctamente NUT puede necesitar un conocimiento técnico avanzado, especialmente cuando se trata de integrarlo con dispositivos SAI específicos y configurar la red para permitir la comunicación entre los dispositivos y el servidor de monitoreo. Esto puede suponer un problema para usuarios amateur que no tengan los conocimientos técnicos necesarios.
- Riesgo de dependencia de red: Si la red tiene problemas de conectividad o fallos, la capacidad de monitorear y controlar los dispositivos SAI a través de NUT puede verse comprometida, lo que podría afectar la capacidad de respuesta ante emergencias.
- Posibles problemas de seguridad: Al permitir el acceso remoto a dispositivos SAI, existe el riesgo de que estos sistemas puedan ser vulnerables a ataques cibernéticos si no se implementan medidas adecuadas de seguridad de red y autenticación.
- Soporte limitado: Aunque NUT es una herramienta de código abierto con una comunidad activa de usuarios y desarrolladores, puede carecer del mismo nivel de soporte técnico y recursos disponibles que ofrecen otro tipo de soluciones comerciales, lo que puede ser un problema para los usuarios menos experimentados.