icono_twiter icono LinkedIn icono Facebook Icono Xing
Ángel García Jerez

Consultor tecnológico de desarrollo de proyectos informáticos. Co-autor del libro "Actualización y mantenimiento del PC (Edición de 2010) publicado por Anaya Multimedia

Ingeniero Técnico en Informática de Sistemas e Ingeniero en Informática (premio al mejor expediente de su promoción)

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación

Somos expertos en Java/J2EE

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2011-01-31

Tutorial visitado 3.571 veces Descargar en PDF
Notificación de eventos en Nut.

Notificación de eventos en Nut

1. Introducción

En un primer tutorial de Nut (pichar aquí) vimos su instalación y configuración básica. Ahora veremos algo un poco más avanzado, configurar upsmon para que nos notifique ante eventos producidos por nuestra UPS o SAI.

Upsmon (servicio encargado de monitorizar la UPS) proporciona entre sus características un sistema de notificación de eventos ante diversas situaciones producidas en la UPS. Perdida/recuperación de corriente eléctrica, perdida/establecimiento de comunicación con la UPS, baja batería son algunos de ellos permitiéndonos estar totalmente informado ante un cambio de estado de nuestro sistema.

Por defecto, upsmon, notifica los eventos a través de: syslog (SYSLOG) y mensajes de consola a todos los usuarios del sistema (WALL) pero este comportamiento puede ser modificado a través de /etc/nut/upsmon.conf. Podremos individualizar el tipo de notificación de cada evento, es decir, puede que ciertos eventos sólo nos interesen que se registren en el syslog y que otros nos envíe un mensaje en tiempo real por email o SMS. Esto último podemos hacerlo gracias a que upsmon tiene, por decirlo de alguna manera, la posibilidad de añadir nuevas formas de notificación.

¿Cómo lo hace? Ejecutando un comando que previamente hemos configurado. Éste será invocado con un único parámetro que representa el mensaje del evento producido y dos variables de entorno: NOTIFYTYPE y UPSNAME que corresponde con el tipo de evento y el nombre de la UPS que ha generado el evento.

Aunque podríamos crear nuestro propio programa que se comportase o realizase determinadas tareas ante cambios de estado de nuestra UPS, Nut, ofrece ya una utilidad bastante potente al respecto llamada upssched (fichero de configuración /etc/nut/upssched.conf). Podremos utilizar timers, para que no se notifique de un evento si éste se ha restablecido en un periodo de tiempo. Va a quedar claro con un ejemplo; imaginaos que se va la luz y por tanto nuestra UPS entra en modo batería pero se restablece al cabo de los 5 segundos. Con los timers podemos indicar que no se notifique de ningún cambio de estado siempre que no perdure más de un intervalo de tiempo.

2. Entorno

Entorno utilizado para escribir este tutorial:

  • Sistema Operativo: Ubuntu Server 64 bits
  • Kernel: 2.6.35-22
  • nut: 2.4.3
  • UPS: Trust 1300VA

3. Activando la notificación de eventos en upsmon

Upsmon es capaz de notificar diez tipos de evento:

  • ONLINE: recuperación de corriente eléctrica.
  • ONBATT: pérdida de corriente eléctrica.
  • LOWBATT: batería baja.
  • FSD: apagado forzoso del sistema.
  • COMMOK: comunicación establecida con la UPS.
  • COMMBAD: comunicación perdida con la UPS.
  • SHUTDOWN: el sistema se está apagando.
  • REPLBATT: la batería debe ser cambiada.
  • NOCOMM: no se puede conectar a la UPS para la monitorización.
  • NOPARENT: el proceso que se ha lanzado para el apagado del sistema ha fallado.

En este tutorial vamos a configurar upsmon/upssched para que nos notifique por email de los eventos:

  • pérdida/recuperación de luz (ONBATT y ONLINE).
  • establecimiento/pérdida de comunicación con la UPS (COMMOK y COMMBAD).

Lo primero que tenemos que hacer es indicar el comando encargado de procesar los eventos producidos por la UPS. En nuestro caso utilizaremos upssched.

A continuación, establecemos el comportamiento que debe tener upsmon ante los diferentes eventos producidos. Los posibles valores son SYSLOG, WALL o EXEC que representan notificación a través del syslog, envío de un mensaje de consola a todos los usuarios o ejecución a través del comando establecido en la variable NOTIFYCMD, respectivamente.

Ahora sólo nos queda configurar upsched. Upsshed utiliza un fichero el cuál será realmente el responsable de procesar los eventos y realizar la tarea en concreto (que en nuestro caso es la de enviar un email). Pero podéis pensar por qué no configuramos nuestro fichero en upsmon y así evitamos utilizar upssched que únicamente es una especie de proxy. Pues realmente es porque el verdadero potencial de upssched es el uso de timers, es decir, tendremos la posibilidad de que si un evento no perdura más de un intervalo de tiempo upssched no ejecuta nuestro fichero de procesamiento de eventos.

Además de los TIMERS también tenemos la posibilidad de que cuando se produzca un evento se notifique inmediatamente del hecho usando el comando EXECUTE.

La nomenclatura que tendremos que utilizar en upssched es muy sencilla. Para los timers tenemos un comando para que comience el evento:

AT TIPO_EVENTO NOMBRE_UPS START-TIMER NOMBRE_EVENTO INTERVALO_DE_TIEMPO

Y otro para inhabilitar el timer:

AT TIPO_EVENTO NOMBRE_UPS CANCEL-TIMER NOMBRE_EVENTO

Por ejemplo, las líneas que tenemos que añadir en el caso de que si se recupera la luz antes de 10 segundos no se notifique de la perdida de esta sería:

AT ONBATT * START-TIMER ups-on-battery 10
AT ONLINE * CANCEL-TIMER ups-on-battery

En el caso de que utilicemos los timers tenemos que tener en cuenta que debemos configurar las variables PIPEFN y LOCKFN para que funcionen.

Para la ejecución inmediata es algo similar:

AT ONLINE * EXECUTE ups-back-on-line

A continuación os nuestro un fichero de ejemplo:

Como habéis podido ver en la línea 1 cuando upssched tiene que notificar de un evento ejecutará el comando ups-send-mail.sh. Éste script recibirá como primer parámetro el nombre del evento configurado en upssched, es decir, on-battery, on-back-on-line, etc...

4 Conclusión

Como habéis podido ver la notificación de eventos con Nut es bastante sencilla de configurar. Desde Autentia siempre intentamos publicar tutoriales que os puedan ayudar a mejorar vuestro entorno de trabajo e intentar minimizar al máximos posibles problemas que puedan surgir en el mantenimiento de nuestro sistemas.

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL: