{"id":608,"date":"2007-04-21T12:33:26","date_gmt":"2007-04-21T10:33:26","guid":{"rendered":"http:\/\/bitacora.eniac2000.com\/?p=608"},"modified":"2007-04-21T12:33:26","modified_gmt":"2007-04-21T10:33:26","slug":"monitorizacion-de-un-sai-en-debian-gnulinux","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=608","title":{"rendered":"Monitorizaci\u00f3n de un SAI en Debian GNU\/Linux"},"content":{"rendered":"<p>Esta ma\u00f1ana he instalado un SAI en mi servidor casero, debido a los continuos cortes de corriente que se vienen sufriendo en mi casa desde un tiempo a esta parte. El modelo elegido ha sido un Yukai PowerMust 600+ Serial\/USB.<\/p>\n<p>En l\u00edneas generales, un SAI (sistema de alimentaci\u00f3n ininterrumpida) es un dispositivo que permite mantener la alimentaci\u00f3n de dispositivos electr\u00f3nicos (en este caso, un PC) cuando hay un corte en la corriente el\u00e9ctrica, durante un per\u00edodo variable en funci\u00f3n de las bater\u00edas con las que vaya equipado el SAI, pero que suele rondar el cuarto de hora-media hora, m\u00e1s que suficiente para que vuelva la luz o alguien vuelva a poner los plomos en su sitio. Adem\u00e1s el SAI actua como estabilizador de corriente, protegiendo al PC de las variaciones en el suministro (lo que se suele conocer como <em>\u00abla chispa adecuada\u00bb<\/em> -adecuada para achicharrarte el equipo-).<\/p>\n<p>Eso ya de por s\u00ed estar\u00eda bien, pero puestos a llevar la situaci\u00f3n al extremo, podr\u00eda suceder que el apag\u00f3n tuviera una duraci\u00f3n mayor del tiempo que el SAI es capaz de suministrar energ\u00eda, o que no hubiera nadie para volver a dar los plomos. El corte indeseado de corriente se producir\u00eda igualmente, pero con una cierta demora. Sin embargo, los SAIs vienen equipados con un puerto de comunicaci\u00f3n (generalmente serie o USB) que permite al ordenador saber cu\u00e1ndo la bater\u00eda del SAI est\u00e1 llegando a un nivel cr\u00edtico, y apagarse de manera autom\u00e1tica. Pues bien, Linux ext\u00e1 preparado para llevar a cabo este proceso, en concreto haciendo uso de NUT (<a href=\"http:\/\/www.networkupstools.org\/\">Network UPS Tools<\/a>).<\/p>\n<p>Para configurar la monitorizaci\u00f3n de un SAI en Debian el procedimiento a seguir ser\u00eda el siguiente:<\/p>\n<p><strong>Instalaci\u00f3n de NUT<\/strong><\/p>\n<p>En Debian es tan simple como instalar NUT mediante apt-get:<\/p>\n<p><code>$ apt-get install nut<\/code><\/p>\n<p>Los repositorios oficiales de Debian contienen todos los paquetes necesarios para realizar la instalaci\u00f3n, por lo que no es necesario realizar ninguna configuraci\u00f3n adicional.<\/p>\n<p><strong>Instalaci\u00f3n de paquetes auxiliares<\/strong><\/p>\n<p>Puede ser necesario realizar una instalaci\u00f3n de paquetes auxilares. Estos paquetes son los siguientes:<\/p>\n<ul>\n<li>nut-usb: Necesario si el SAI s\u00f3lo tiene conexi\u00f3n USB (el Yukai dispone de puerto serie y USB; yo he elegido utilizar el puerto serie para tener un puerto USB m\u00e1s disponible)<\/li>\n<li>nut-snmp: Necesario si se necesita un driver <a href=\"http:\/\/es.wikipedia.org\/wiki\/Simple_Network_Management_Protocol\">SNMP<\/a> para monitorizar el SAI en red local<\/li>\n<li>nut-cgi: Este paquete ofrece una interfaz web, programada en CGI, para monitorizar el SAI desde un navegador web<\/li>\n<li>knutclient: Este paquete proporciona una aplicaci\u00f3n cliente de KDE para monitorizar el SAI<\/li>\n<\/ul>\n<p><strong>Configuraci\u00f3n de NUT<\/strong><\/p>\n<p>Una vez realizado el proceso de instalaci\u00f3n mediante apt-get, es preciso realizar la configuraci\u00f3n 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\u00e1tica. El contenido del archivo debe ser el siguiente:<\/p>\n<p><code># start upsd<br \/>\nSTART_UPSD=yes<\/p>\n<p># start upsmon<br \/>\nSTART_UPSMON=yes<\/code><\/p>\n<p>Una vez hecho esto, es preciso a\u00f1adir el usuario <em>nut<\/em> al grupo <em>dialout<\/em>, propietario de los puertos serie:<\/p>\n<p><code>$ adduser nut dialout<\/code><\/p>\n<p>A continuaci\u00f3n hay que configurar el controlador de nut. Los archivos de configuraci\u00f3n del controlador deben encontrarse en el directorio <em>\/etc\/nut<\/em>. Sin embargo, la instalaci\u00f3n de apt-get crea el directorio, pero no incluye por defecto ning\u00fan archivo en el directorio, siendo preciso copiarlos desde el directorio <em>\/usr\/share\/doc\/nut\/examples\/<\/em>:<\/p>\n<p><code>$ cp \/usr\/share\/doc\/nut\/examples\/*.conf \/etc\/nut<br \/>\n$ cp \/usr\/share\/doc\/nut\/examples\/*.users \/etc\/nut<\/code><\/p>\n<p>En primer lugar ha de editarse el archivo <em>\/etc\/nut\/ups.conf<\/em>. Su contenido ha de ser el siguiente:<\/p>\n<p><code>[misai]<br \/>\ndriver = powermust<br \/>\nport = \/dev\/ttyS0<\/code><\/p>\n<p>La primera l\u00ednea designa el nombre que vamos a dar a nuestro SAI. La segunda indica a NUT el <a href=\"http:\/\/www.networkupstools.org\/compat\/\">driver<\/a> a usar para comunicarse con nuestro SAI, y la tercera indica qu\u00e9 puerto de comunicaci\u00f3n a usar (en este caso, el primer puerto serie -COM1-).<\/p>\n<p>En segundo lugar ha de configurarse el archivo <em>\/etc\/nut\/upsd.conf<\/em>, que indica las m\u00e1quinas con permisos para acceder al demonio upsd. Un ejemplo de configuraci\u00f3n ser\u00eda el siguiente:<\/p>\n<p><code>ACL localhost 127.0.0.1\/32<br \/>\nACL local_network 192.168.0.0\/24<br \/>\nACL all 0.0.0.0\/0<\/p>\n<p>ACCEPT monitor localhost<br \/>\nACCEPT local_network<br \/>\nREJECT all all<br \/>\n<\/code><\/p>\n<p>Con esta configuraci\u00f3n se est\u00e1 indicando que se permita el acceso al demonio al equipo local, as\u00ed 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.<\/p>\n<p>En tercer lugar se ha de indicar en el archivo <em>\/etc\/nut\/upsd.users<\/em> qu\u00e9 usuarios tienen permisos para acceder al sistema de control de NUT, as\u00ed como los permisos que tiene cada usuario. Un ejemplo de contenido ser\u00eda el siguiente:<\/p>\n<p><code>[admin]<br \/>\n    password    = passwordadmin<br \/>\n    allowfrom   = localhost local_network<br \/>\n    actions     = SET<br \/>\n    instcmds    = ALL<\/p>\n<p>[control]<br \/>\n    password = passwordcontrol<br \/>\n    allowfrom = localhost<br \/>\n    upsmon master<\/p>\n<p>[clientes]<br \/>\n    password = passwordclientes<br \/>\n    allowfrom = local_network<br \/>\n    upsmon slave<\/code><\/p>\n<p>El c\u00f3digo entre corchetes indica el nombre del usuario creado; la l\u00ednea password especifica la contrase\u00f1a del usuario, la l\u00ednea <strong>allowfrom<\/strong> indica desde d\u00f3nde (definido en el archivo <em>\/etc\/nut\/upsd.conf<\/em>) se puede conectar ese usuario. La l\u00ednea <strong>actions<\/strong> define las acciones que ese usuario puede realizar, la l\u00ednea <strong>instcmds<\/strong> define los comandos que pueden ser usados por el usuario, por \u00faltimo, la l\u00ednea <strong>upsmon<\/strong> master define que ese usuario ser\u00e1 el controlador del servidor, y <strong>upsmon<\/strong> slave ser\u00e1 el controlador remoto.<\/p>\n<p>Por \u00faltimo, se ha de configurar el archivo <em>\/etc\/nut\/upsmon.conf<\/em>, que controla el acceso al monitor NUT del SAI. Un ejemplo de archivo ser\u00eda el siguiente:<\/p>\n<p><code>MONITOR misai@localhost 1 control passwordcontrol master<br \/>\nRUN_AS_USER nut<br \/>\nMINSUPPLIES 1<br \/>\nSHUTDOWNCMD \"\/sbin\/shutdown -h +0\"<br \/>\nPOLLFREQ 5<br \/>\nPOLLFREQALERT 5<br \/>\nHOSTSYNC 15<br \/>\nDEADTIME 15<br \/>\nPOWERDOWNFLAG \/etc\/killpower<\/p>\n<p>NOTIFYMSG ONLINE \"UPS: Normal state\"<br \/>\nNOTIFYMSG ONBATT \"UPS: Cable communication error\"<br \/>\nNOTIFYMSG LOWBATT \"UPS: Battery low\"<br \/>\nNOTIFYMSG FSD \"UPS: Starting shutdown\"<br \/>\nNOTIFYMSG COMMOK \"UPS: Communication restored\"<br \/>\nNOTIFYMSG COMMBAD \"UPS: Communication lose\"<br \/>\nNOTIFYMSG SHUTDOWN \"UPS: Shutting down\"<br \/>\nNOTIFYMSG REPLBATT \"UPS: Replace battery\"<br \/>\nNOTIFYFLAG ONLINE SYSLOG<br \/>\nNOTIFYFLAG ONBATT SYSLOG+WALL<br \/>\nNOTIFYFLAG LOWBATT SYSLOG+WALL<br \/>\nNOTIFYFLAG FSD SYSLOG+WALL<br \/>\nNOTIFYFLAG COMMOK SYSLOG<br \/>\nNOTIFYFLAG COMMBAD SYSLOG<br \/>\nNOTIFYFLAG SHUTDOWN SYSLOG<br \/>\nNOTIFYFLAG REPLBATT SYSLOG<\/p>\n<p>RBWARNTIME 43200<br \/>\nNOCOMMWARNTIME 300<br \/>\nFINALDELAY 5<br \/>\n<\/code><\/p>\n<p>N\u00f3tese que en en este archivo la l\u00ednea MONITOR especifica que queremos monitorizar el SAI llamado <em>misai,<\/em> conectado a la m\u00e1quina localhost (localmente), que tiene 1 bater\u00eda, el usuario es <em>control,<\/em> nuestro password es <em>passwordcontrol<\/em> y estamos en modo master. Por otro lado, el archivo permite configurar el comando de apagado, los mensajes de aviso del estado del SAI.<\/p>\n<p>Por \u00faltimo, se ha de iniciar el servidor mediante el siguiente comando:<\/p>\n<p><code>$ \/etc\/init.d\/nut restart<\/code><\/p>\n<p>Se puede monitorizar el SAI desde l\u00ednea de comandos:<\/p>\n<p><code>$  upsc misai@localhost<\/code><\/p>\n<p><strong>Monitorizaci\u00f3n remota mediante servicio web<\/strong><\/p>\n<p>Una posibilidad bastante interesante que soporta NUT es la monitorizaci\u00f3n del SAI mediante servicio web. Para ello provee de un script CGI que permite acceder al estado del SAI haciendo uso de un navegador.<\/p>\n<p>En primer lugar, ha de instalarse el paquete <em>nut-cgi<\/em> mediante apt-get:<\/p>\n<p><code>$ apt-get install nut-cgi<\/code><\/p>\n<p>Este comando instala el paquete, as\u00ed como los scripts cgi en el directorio por defecto de instalaci\u00f3n de ficheros cgi-bin de nuestro servidor web (con apache, <em>\/usr\/lib\/cgi-bin<\/em>).<\/p>\n<p>En segundo lugar es preciso crear los archivos de configuraci\u00f3n de <em>nut-cgi<\/em>. Como en el caso anterior, la instalaci\u00f3n por defecto no copia estos archivos en el directorio de nut, por lo que es preciso copiarlos desde <em>\/usr\/share\/doc\/nut-cgi\/examples\/<\/em>:<\/p>\n<p><code>$ cp \/usr\/share\/doc\/nut-cgi\/examples\/*.* \/etc\/nut <\/code><\/p>\n<p>Una vez hecho esto, se ha de editar el archivo <em>hosts.conf<\/em> para indicar a qu\u00e9 SAIs se quiere permitir el acceso desde el servicio web. Un ejemplo de contenido ser\u00eda el siguiente:<\/p>\n<p><code>MONITOR misai@localhost \"Yukai Powermust 600+\"<\/code><\/p>\n<p>Por \u00faltimo, se ha de editar el archivo <em>\/etc\/nut\/upsset.conf<\/em> para indicar desde qu\u00e9 equipos puede accederse al script cgi. Un ejemplo de contenido ser\u00eda el siguiente:<\/p>\n<p><code>&lt;Files upsset.cgi&gt;<br \/>\ndeny from all<br \/>\nallow from 192.168.0.0<br \/>\n&lt;\/Files&gt;<\/code><\/p>\n<p>De esta manera, estamos indicando que s\u00f3lo puede accederse desde los equipos pertenecientes a la red local.<\/p>\n<p>Para acceder al scritp, hemos de entrar en la siguiente direcci\u00f3n desde nuestro navegador favorito:<br \/>\nhttp:\/\/IP\/cgi-bin\/nut\/upsstats.cgi<\/p>\n<p>Las pantallas de monitorizaci\u00f3n ser\u00edan como las siguientes:<\/p>\n<p><img src='http:\/\/bitacora.eniac2000.com\/wp-content\/nutcgi01.png' alt='Pantalla inicial de nut-cgi' \/><br \/>\n<strong>Pantalla inicial de nut-cgi<\/strong><\/p>\n<p><img src='http:\/\/bitacora.eniac2000.com\/wp-content\/nutcgi02.png' alt='Monitorizaci&Atilde;&sup3;n del SAI' \/><br \/>\n<strong>Monitorizaci\u00f3n del SAI<\/strong><br \/>\n<strong><br \/>\nMonitorizaci\u00f3n mediante knutclient<\/strong><\/p>\n<p>knutclient es una aplicaci\u00f3n cliente de KDE que permite monitorizar el SAI. Su instalaci\u00f3n ser\u00eda de nuevo con apt-get:<\/p>\n<p><code>$ apt-get install knutclient<\/code><\/p>\n<p>Una vez instalado, hay que configurar el programa para acceder al SAI, indicando la direcci\u00f3n del SAI, el nombre, el usuario y la contrase\u00f1a.<\/p>\n<p><a href='http:\/\/bitacora.eniac2000.com\/wp-content\/knutclient01.png' ><img src='http:\/\/bitacora.eniac2000.com\/wp-content\/thumb-knutclient01.png' alt='Configuraci&Atilde;&sup3;n de KNutClient' \/><\/a><\/p>\n<p>Puede apreciarse que se puede escoger qu\u00e9 valores a montrar por la aplicaci\u00f3n.<\/p>\n<p>La ventana principal de la aplicaci\u00f3n, donde se muestran los valores monitorizados, ser\u00eda la siguiente:<\/p>\n<p><a href='http:\/\/bitacora.eniac2000.com\/wp-content\/knutclient02.png' ><img src='http:\/\/bitacora.eniac2000.com\/wp-content\/thumb-knutclient02.png' alt='Interfaz de KNutClient' \/><\/a><\/p>\n<p><strong>Documentaci\u00f3n de referencia<\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/wiki.monserveurperso.com\/wakka.php?wiki=NutInstall\">Installation et configuration de NUT<\/a><\/li>\n<li><a href=\"http:\/\/www.servitux.org\/view.php\/page\/sai\">Monitorizar un SAI con Debian<\/a><\/li>\n<li><a href=\"http:\/\/opensource.mgeups.com\/install\/debian.htm\">NUT How-To Debian<\/a><\/li>\n<li><a href=\"http:\/\/blog.elgura.com\/index.php?p=240&#038;more=1&#038;c=1&#038;tb=1&#038;pb=1\">KNutClient: Interfaz gr\u00e1fica de NUT (upsc) para KDE<\/a><\/li>\n<li><a href=\"http:\/\/www.networkupstools.org\/\">Network UPS Tools<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Esta ma\u00f1ana he instalado un SAI en mi servidor casero,<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[],"series":[],"class_list":["post-608","post","type-post","status-publish","format-standard","hentry","category-informatica"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/608","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=608"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/608\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=608"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=608"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=608"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}