Monitorizacion de un SAI con GNU/Debian Linux
Paco Brufal
[email protected]
Version 0.3, 07/06/2005
Este pequeño documento explica como monitorizar un SAI (Sistema de Alimentacion Ininterrumpida) con un
servidor Linux Debian mediante el puerto serie. La unidad SAI es una Pulsar ESV14+ con puerto serie, pero
este documento se puede aplicar, con pequeñas modicaciones, a otras unidades SAI. La ultima version de este
documento siempre estara en http://www.servitux.org . Este documento se distribuye SIN NINGUNA GARANTIA
bajo la licencia GPL ( http://www.gnu.org ). No me responsabilizo de los posibles daños que pueda causar la
ejecucion de los pasos descritos en este documento.
Contents
1 Introduccion
2 Como funciona todo esto
3 Instalacion de NUT
4 Conguracion del controlador del SAI
4.1 Especicacion del SAI
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Listas de control de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Creacion de los usuarios de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4 Conguracion del monitor de SAI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5
Iniciando el servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Conguracion de los sistemas esclavos
5.1
5.2
Instalacion y conguracion en Debian Sid . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instalacion y conguracion en Debian Woody . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Conguracion del puesto de control
6.1
Instalacion y conguracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 Recomendaciones y enlaces
1 Introduccion
1
2
3
3
3
3
4
5
6
6
6
7
8
8
8
Para la explicacion de este documento vamos a suponer el siguiente escenario. Poseemos una unidad SAI
con puerto serie. A este SAI estan conectados 5 servidores mas, que seran 1 maestro (el que controla el SAI
por el puerto serie), 4 esclavos, que monitorizan el estado del SAI mediante la red local, y ademas usaremos
la workstation del administrador para saber el estado del SAI, pero esta workstation NO estara conectada
al SAI.
2. Como funciona todo esto
2
Para monitorizar el SAI usaremos las herramientas NUT (Network UPS Tools). El servidor maestro
sera un sistema Linux Debian Sid (inestable), 3 esclavos sera Linux Debian Sid (inestable), 1 sistema esclavo
Linux Debian Woody (estable), y el sistema del administrador es una Debian Sid.
La pagina web de las herramientas NUT es http://www.exploits.org/nut/
Antes de instalar nada comprueba que el SAI esta con la batera cargada al maximo, que los servidores estan
tomando la corriente del SAI, y que el cable serie esta correctamente conectado.
Y como ultima recomendacion, si no usas la distribucion Debian, no sigas los pasos al pie de la letra, ya que
hay cosas que pueden cambiar (poco, pero pueden cambiar).
2 Como funciona todo esto
Paso a explicar brevemente como funciona el control del SAI.
1. Todo esta funcionando perfectamente
2. Se va la luz, y el SAI entra en modo batera
3. La batera llega a su carga mnima
4. El sistema maestro notica a los esclavos que dentro de poco se deben apagar
5. Cuando los esclavos reciben la orden:
(a) Generan un evento NOTIFY SHUTDOWN
(b) Esperan el tiempo denido en FINALDELAY
(c) Ejecutan el comando denido en SHUTDOWNCMD
(d) Se apagan correctamente
6. El sistema maestro espera que todos los clientes se desconecten
7. El maestro empieza la secuencia de apagado:
(a) Genera un evento NOTIFY SHUTDOWN
(b) Espera el tiempo denido en FINALDELAY
(c) Crea el chero denido en POWERDOWNFLAG
(d) Ejecuta el comando denido en SHUTDOWNCMD
8. El proceso de apagado se lleva a cabo normalmente, y el sistema va parando los servicios y desmontando
unidades
9. El sistema encuentra en chero denido en POWERDOWNFLAG, y ejecuta el apagado del SAI
10. Cuando vuelve la luz, todos los sistemas se activan y todo vuelve a su estado normal.
El hecho de crear un chero sirve para que los scripts de apagado del sistema comprueben si existe, y si
es as, envien al SAI el comando de apagado. Esto es porque no merece tener el SAI encendido si ningun
sistema esta funcionando.
En Debian, el sistema de corte de corriente ya viene implementado. El ultimo script que se ejecuta durante
el apagado es /etc/init.d/halt. Este script llama a otro script /etc/init.d/ups-monitor con el parametro
powero. Si existe el chero denido en POWERDOWNFLAG, el SAI se apagara y quedaran todos los
ordenadores sin electricidad.
3.
Instalacion de NUT
3
3 Instalacion de NUT
Para instalar NUT en el servidor usaremos la herramienta apt-get de Debian:
# apt-get install nut
En Debian Sid (inestable), una vez ha terminado de instalarse, debes editar el chero /etc/default/nut y
poner a yes las opciones START UPSD y START UPSMON :
# start upsd
START_UPSD=yes
# start upsmon
START_UPSMON=yes
Seguidamente, añadiremos el usuario nut al grupo dialout, que es el grupo propietario de los puertos serie
(/dev/ttyS0 por ejemplo).
# adduser nut dialout
4 Conguracion del controlador del SAI
En este apartado vamos a congurar el sistema que controla al SAI por el puerto serie.
4.1 Especicacion del SAI
Una vez instalado, pasamos a congurar el controlador.
/etc/nut/ups.conf . Este chero contiene los parametros necesarios para conectarnos al SAI.
En primer lugar conguramos el chero
[elsai]
driver = mge-utalk
port = /dev/ttyS0
Lo que va entre corchetes ([elsai]) es un nombre descriptivo, puede ser el que nosotros queramos (sin espacios
ni signos de puntuacion, para no liar la cosa ;). La linea driver especica que tipo de comunicacion se usara
para hablar con el SAI. En este caso he usado el mge-utalk, que sirve para modelos de SAI MGE. La linea
port especica cual es el puerto serie por el cual nos comunicaremos con el SAI.
Dentro de este chero hay mucha documentacion que te sera muy util si tienes algun problema.
4.2 Listas de control de acceso
Una de las caractersticas de NUT es que nos permite congurar niveles de acceso a las distintas maquinas
de la red. Los controles de acceso se conguran en el chero /etc/nut/upsd.conf . Este es un ejemplo:
ACL localhost 127.0.0.1/32
ACL maquina1 172.16.2.3/32
ACL maquina2 172.16.2.6/32
ACL maquina3 172.16.2.1/32
ACL maquina4 172.16.2.18/32
4. Conguracion del controlador del SAI
4
ACL maquina5 172.16.2.14/32
ACL all 0.0.0.0/0
ACCESS grant monitor localhost
ACCESS grant monitor maquina1
ACCESS grant monitor maquina2
ACCESS grant login maquina3
ACCESS grant monitor maquina4
ACCESS grant monitor maquina5
ACCESS deny all all
En el primer bloque se denen una serie de nombres asociados a unas IPs. En el segundo bloque se dene que
clase de acceso tienen los distintos nombre antes mencionados. Fijate que la maquina3 tiene un parametro
login en vez de monitor, esto se debe a que maquina3 tiene instalado un sistema Debian Woody (estable),
y en la version de NUT incluida no existe el modo monitor. La directiva grant signica acceso permitido,
y la directiva deny signica acceso denegado. El orden de las ACL SI que importa, as que primero se debe
permitir el acceso a las maquinas que queramos, y luego se deniega todo lo demas.
En las ultimas versiones de NUT (2.x), la forma de conceder o denegar acceso ha cambiado. Ahora deberan
especicarse las reglas as:
ACL localhost 127.0.0.1/32
ACL maquina1 172.16.2.3/32
ACL maquina2 172.16.2.6/32
ACL maquina3 172.16.2.1/32
ACL maquina4 172.16.2.18/32
ACL maquina5 172.16.2.14/32
ACL all 0.0.0.0/0
ACCEPT localhost
ACCEPT maquina1
ACCEPT maquina2
ACCEPT maquina3
ACCEPT maquina4
ACCEPT maquina5
REJECT all
4.3 Creacion de los usuarios de acceso
Para que las maquinas (tanto el servidor como los esclavos) tengan acceso al sistema de control, sera necesario
crear una serie de usuarios con sus correspondientes contraseñas. Estos usuarios se conguran en el chero
/etc/nut/upsd.users:
[admin]
password = mipassword
allowfrom = localhost
actions = SET
instcmds = ALL
[control]
password = otropassword
allowfrom = localhost
upsmon master
4. Conguracion del controlador del SAI
5
[clientes]
password = yotropassword
allowfrom = maquina1 maquina2 maquina4 maquina5
upsmon slave
[woody]
password = debianwoody
allow from = maquina3
upsmon slave
Lo que va entre corchetes es el nombre del usuario que vamos a crear. La linea password es la contraseña
que le asignamos a ese usuario. La linea allowfrom especica la maquina desde la cual se puede conectar
ese usuario. La linea actions dene que acciones puede realizar ese usuario. La linea instcmds dene
los comandos que pueden ser usados por ese usuario. Por ultimo, la linea upsmon master dene que ese
usuario sera el controlador del servidor, y upsmon slave sera el controlador remoto.
Como ves, hemos puesto la maquina3 separada de las demas. Esto es porque maquina3 al llevar una
version diferente de NUT, necesita una conguracion especial que veremos mas adelante.
4.4 Conguracion del monitor de SAI
Pasamos a congurar el chero /etc/nut/upsmon.conf . Este chero contiene la conguracion del demonio
upsmon:
MONITOR elsai@localhost 1 control mipassword master
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /usr/local/bin/mensaje-ups
POLLFREQ 60
POLLFREQALERT 10
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower
NOTIFYMSG ONLINE "UPS %s en estado normal"
NOTIFYMSG ONBATT "Alguien ha quitado el cable del SAI %s"
NOTIFYMSG LOWBATT "Bateria demasiado baja"
NOTIFYMSG FSD "Ha llegado el momento de apagar el SAI"
NOTIFYMSG COMMOK "Fiiiuuu, ya puedo volver a hablar con el SAI"
NOTIFYMSG COMMBAD "Otiiaa, que el SAI no me habla"
NOTIFYMSG SHUTDOWN "Apagando!"
NOTIFYMSG REPLBATT "Macho, ves cambiando la bateria"
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ON
Comentarios de: Monitorización de un SAI con GNU/Debian Linux (0)
No hay comentarios