Fusilado de: http://www.eniac2000.com/?p=608
En líneas generales, un SAI (sistema de alimentación ininterrumpida) es un dispositivo que permite mantener la alimentación de dispositivos electrónicos (en este caso, un PC) cuando hay un corte en la corriente eléctrica, durante un período variable en función de las baterías con las que vaya equipado el SAI, pero que suele rondar el cuarto de hora-media hora, más que suficiente para que vuelva la luz o alguien vuelva a poner los plomos en su sitio. Además el SAI actua como estabilizador de corriente, protegiendo al PC de las variaciones en el suministro (lo que se suele conocer como “la chispa adecuada” -adecuada para achicharrarte el equipo-).
Eso ya de por sí estaría bien, pero puestos a llevar la situación al extremo, podría suceder que el apagón tuviera una duración mayor del tiempo que el SAI es capaz de suministrar energía, o que no hubiera nadie para volver a dar los plomos. El corte indeseado de corriente se produciría igualmente, pero con una cierta demora. Sin embargo, los SAIs vienen equipados con un puerto de comunicación (generalmente serie o USB) que permite al ordenador saber cuándo la batería del SAI está llegando a un nivel crítico, y apagarse de manera automática. Pues bien, Linux está preparado para llevar a cabo este proceso, en concreto haciendo uso de NUT (Network UPS Tools).
Para configurar la monitorización de un SAI en Debian el procedimiento a seguir sería el siguiente:
Instalación de NUT
En Debian es tan simple como instalar NUT mediante apt-get:
# apt-get install nut
Instalación de paquetes auxiliares
Puede ser necesario realizar una instalación de paquetes auxilares. Estos paquetes son los siguientes:
- nut-usb: Necesario si el SAI sólo tiene conexión USB (el Yukai dispone de puerto serie y USB; yo he elegido utilizar el puerto serie para tener un puerto USB más disponible)
- nut-snmp: Necesario si se necesita un driver SNMP para monitorizar el SAI en red local
- nut-cgi: Este paquete ofrece una interfaz web, programada en CGI, para monitorizar el SAI desde un navegador web
- knutclient: Este paquete proporciona una aplicación cliente de KDE para monitorizar el SAI
Configuración de NUT
Una vez realizado el proceso de instalación mediante apt-get, es preciso realizar la configuración de NUT para que reconozca nuestro SAI. En primer lugar, es preciso editar el archivo /etc/default/nut para hacer que los demonios de NUT se inicien de manera automática. El contenido del archivo debe ser el siguiente:
# start upsd
START_UPSD=yes
# start upsmon
START_UPSMON=yes
Una vez hecho esto, es preciso añadir el usuario nut al grupo dialout y tty, propietario de los puertos serie:
# adduser nut dialout
# adduser nut tty
A continuación hay que configurar el controlador de nut. Los archivos de configuración del controlador deben encontrarse en el directorio /etc/nut. Sin embargo, la instalación de apt-get crea el directorio, pero no incluye por defecto ningún archivo en el directorio, siendo preciso copiarlos desde el directorio /usr/share/doc/nut/examples/:
# cp /usr/share/doc/nut/examples/*.conf.sample /etc/nut
# cp /usr/share/doc/nut/examples/*.users.sample /etc/nut
(Luego habrá que renombrarlos quitándole la terminación *.sample.)
En primer lugar ha de editarse el archivo /etc/nut/ups.conf. Su contenido ha de ser el siguiente:
[misai]
driver = megatec_usb
port = auto
La primera línea designa el nombre que vamos a dar a nuestro SAI. La segunda indica a NUT el driver a usar para comunicarse con nuestro SAI, y la tercera indica qué puerto de comunicación a usar (en este caso, el primer puerto serie -COM1-).
En segundo lugar ha de configurarse el archivo /etc/nut/upsd.conf, que indica las máquinas con permisos para acceder al demonio upsd. Un ejemplo de configuración sería el siguiente:
ACL localhost 127.0.0.1/32
ACL local_network 192.168.0.0/24
ACL all 0.0.0.0/0
ACCEPT monitor localhost
ACCEPT local_network
REJECT all all
Con esta configuración se está indicando que se permita el acceso al demonio al equipo local, así como a aquellos equipos que pertenezcan a la red local (siendo las direcciones de la red 192.168.0.xxx), y que rechace al resto de equipos.
En tercer lugar se ha de indicar en el archivo /etc/nut/upsd.users qué usuarios tienen permisos para acceder al sistema de control de NUT, así como los permisos que tiene cada usuario. Un ejemplo de contenido sería el siguiente:
[admin]
password = passwordadmin
allowfrom = localhost local_network
actions = SET
instcmds = ALL
[control]
password = passwordcontrol
allowfrom = localhost local_network
upsmon master
[clientes]
password = passwordclientes
allowfrom = local_network
upsmon slave
El código entre corchetes indica el nombre del usuario creado; la línea password especifica la contraseña del usuario, la línea allowfrom indica desde dónde (definido en el archivo /etc/nut/upsd.conf) se puede conectar ese usuario. La línea actions define las acciones que ese usuario puede realizar, la línea instcmds define los comandos que pueden ser usados por el usuario, por último, la línea upsmon master define que ese usuario será el controlador del servidor, y upsmon slave será el controlador remoto.
Por último, se ha de configurar el archivo /etc/nut/upsmon.conf, que controla el acceso al monitor NUT del SAI. Un ejemplo de archivo sería el siguiente:
MONITOR misai@localhost 1 control passwordcontrol master
RUN_AS_USER nut
MINSUPPLIES 1
SHUTDOWNCMD “/sbin/shutdown -h +0″
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYMSG ONLINE “UPS: Normal state”
NOTIFYMSG ONBATT “UPS: Cable communication error”
NOTIFYMSG LOWBATT “UPS: Battery low”
NOTIFYMSG FSD “UPS: Starting shutdown”
NOTIFYMSG COMMOK “UPS: Communication restored”
NOTIFYMSG COMMBAD “UPS: Communication lose”
NOTIFYMSG SHUTDOWN “UPS: Shutting down”
NOTIFYMSG REPLBATT “UPS: Replace battery”
NOTIFYFLAG ONLINE SYSLOG
NOTIFYFLAG ONBATT SYSLOG+WALL
NOTIFYFLAG LOWBATT SYSLOG+WALL
NOTIFYFLAG FSD SYSLOG+WALL
NOTIFYFLAG COMMOK SYSLOG
NOTIFYFLAG COMMBAD SYSLOG
NOTIFYFLAG SHUTDOWN SYSLOG
NOTIFYFLAG REPLBATT SYSLOG
RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5
Nótese que en en este archivo la línea MONITOR especifica que queremos monitorizar el SAI llamado misai, conectado a la máquina localhost (localmente), que tiene 1 batería, el usuario es control, nuestro password es passwordcontrol y estamos en modo master. Por otro lado, el archivo permite configurar el comando de apagado, los mensajes de aviso del estado del SAI.
# chown root:nut /etc/nut/*
# chmod o-r /etc/nut/*
Por último, se ha de iniciar el servidor mediante el siguiente comando:
# /etc/init.d/nut restart
Se puede monitorizar el SAI desde línea de comandos:
# upsc misai@localhost
Monitorización remota mediante servicio web
Una posibilidad bastante interesante que soporta NUT es la monitorización del SAI mediante servicio web. Para ello provee de un script CGI que permite acceder al estado del SAI haciendo uso de un navegador.
En primer lugar, ha de instalarse el paquete nut-cgi mediante apt-get:
# apt-get install nut-cgi
Este comando instala el paquete, así como los scripts cgi en el directorio por defecto de instalación de ficheros cgi-bin de nuestro servidor web (con apache, /usr/lib/cgi-bin).
En segundo lugar es preciso crear los archivos de configuración de nut-cgi. Como en el caso anterior, la instalación por defecto no copia estos archivos en el directorio de nut, por lo que es preciso copiarlos desde /usr/share/doc/nut-cgi/examples/:
# cp /usr/share/doc/nut-cgi/examples/*.* /etc/nut
(Luego habrá que renombrarlos quitándole la terminación *.sample.)
Una vez hecho esto, se ha de editar el archivo hosts.conf para indicar a qué SAIs se quiere permitir el acceso desde el servicio web. Un ejemplo de contenido sería el siguiente:
MONITOR misai@localhost “Belkin Active Battery Backup”
Por último, se ha de editar el archivo /etc/nut/upsset.conf para indicar desde qué equipos puede accederse al script cgi. Un ejemplo de contenido sería el siguiente:
<Files upsset.cgi>
deny from all
allow from 192.168.0.0
</Files>
De esta manera, estamos indicando que sólo puede accederse desde los equipos pertenecientes a la red local.
Para acceder al scritp, hemos de entrar en la siguiente dirección desde nuestro navegador favorito:
http://IP/cgi-bin/nut/upsstats.cgi
Las pantallas de monitorización serían como las siguientes:

Pantalla inicial de nut-cgi

Monitorización del SAI










0 Respuesta a “Monitorización de un SAI en Debian Lenny”