Que el calor no te haga salir de la piscina. Parte I

Estamos en pleno mes de agosto, medio país de vacaciones, otros esperando a que nos lleguen, pero todos pasando calor. Hace unos días los termómetros marcaban más de 40 grados a la sombra, 48 grados en algunos puntos de España. Los afortunados pudisteis pasar esa ola de calor a remojo en piscinas, ríos y playas, con vuestros mojitos, horchatas y refrescos, otros nos conformamos con poder tomar un rico café con leche y hielo a media tarde para poder estar fresquitos, aunque lo mas importante es mantenerse hidratado y evitar realizar en la horas centrales del día tareas que requieran un gran esfuerzo físico. Con estos simple consejos evitaremos sufrir un desfallecimiento o golpe de calor. Pero… ¿y lo servidores?, ¿qué ocurre con los servidores, ordenadores, centros de procesos de datos en pleno mes de agosto?, ¿también pueden aplicar estos consejos? La respuesta a esta última pregunta es sí, pero de una forma un tanto distinta que explicaré ahora.

Fig.1 “¿Es que nadie va a pensar en los servidores?” – 16 de marzo de 1997, Helen Lovejoy.

 

Lo que ocurre con servidores, ordenadores y centros de procesos de datos (datacenters) en los meses de verano, es que se calientan y mucho. Que un servidor se caliente un par de grados más en verano que en invierno, no tiene mayor importancia. El problema es cuando estos servidores o centros de procesos se calientan tanto que llegan al punto en el que los equipos se apagan automáticamente por seguridad y así evitar males mayores. Si lo que tenemos es un servidor o un par de ellos a nivel domestico, poco más podemos hacer que mantener el aire acondicionado de la habitación encendido continuamente. El problema viene, cuando lo que tenemos es un centro de proceso de datos (CPD: sala habilitada para mantener un gran números de equipos informáticos en las condiciones técnicas adecuadas) y falla el sistema de climatización de nuestro CPD. Si falla en invierno, el problema no es tan grave, pero como sabéis esto es informática, y en informática Murphy nunca anda lejos, así que si un sistema de climatización puede fallar, lo hará en pleno verano cuando las temperaturas exteriores sean máximas y la mitad del personal de TI se encuentre de vacaciones a cientos de Kilómetros del CPD. – ¿Qué podemos hacer nosotros para evitar que el sistema de climatización de nuestro CPD nunca falle?. – Pues poco más que cumplir con el mantenimiento de los equipos y no sobrecargar un sistema mal dimensionado.

Aunque lo más importante es que si falla el sistema de climatización o simplemente pierde potencia, podamos detectar la subida de temperatura a tiempo y así poder actuar en consecuencia antes de que sea demasiado tarde: por ejemplo, apagando los sistemas no críticos en primer lugar, para que no sigan calentando el aire del resto de la sala, tratando de refrigerar la sala por otros medios o sirviéndole un rico café con hielo bien frío a nuestra querida EVA (Enterprise Virtual Array). Lo de poder actuar a tiempo, no siempre es fácil. Si el sistema de climatización falla y nuestro CPD no cuenta con islas (pasillos fríos y calientes), si no que es un sala diáfana de armarios y no muy alta, la temperatura puede subir 10 grados en menos de 10 minutos, lo que significa que si la temperatura ambiente era de 25 grados (lo de tener los CPD a 20-22 grados ya no se lleva 😉 ), en diez minutos, la temperatura ambiente estará en 35 grados y el interior de las máquinas tranquilamente por encima de los 70 grados, y solo hay que esperar un poco más para que lleguen a un temperatura critica y se apaguen automáticamente, con todos los problemas que esto conlleva.


Fig.2 CPD distribuido en islas: pasillo caliente, pasillo frío.

 

En el mercado existen soluciones de sondas de medición para controlar la temperatura de nuestras salas de ordenadores (CPD) que no solo miden y registran las temperaturas, si no que son capaces de enviar notificaciones con alertas en caso de que surja alguna incidencia con la temperatura del CPD para que los técnicos puedan actuar en consecuencia sin perder un segundo. No es lo mismo estar controlando la temperatura de los CPUs, GPUs, HDs, Fuentes de Alimentación internas de los servidores… que del ambiente del CPD, ya que si controlamos la temperatura ambiente del CPD nos podemos adelantar a la detección que puedan hacer las sondas internas de los distintos equipos: servidores, switches, router… El problema que estas sondas comerciales suelen tener unos precios bastante elevados, que no caros, ya que son equipos suficientemente probados y construidos de tal manera que su fiabilidad y resistencia están más que demostrada y certificada.

Hoy os voy a explicar como montar una estación de control de temperatura y humedad para nuestros CPD, domicilios, habitaciones… con visualización de alertas web, gráficas de rendimiento, así como con un sistema online de alertas y comunicación vía Telegram con solicitud de datos, todo ello por tan solo 20€, que es lo que cuesta una Raspberry Pi A. Si, la RPi A de hace 5 años, la que traía salida de vídeo RCA, 2 USB y solo consumía 500mA. Realmente con una RPi A nos sobra para los que vamos a hacer, eso sí, si tenéis una RPi v2 o una v3 lógicamente también os servirá. También necesitaremos una sonda DHT11 analógica, recomiendo comprar el modelo que incluye PCB, el de tres pines ya trae la resistencia integrada. También podemos utilizar el modelo DHT22 que es un poco mas potente que el 11. El funcionamiento del sensor de temperatura y humedad DHT11 es muy simple: cuando recibe el orden de realizar una medición, devuelve un valor digital de 40 bits de datos: 8 primeros bits, el valor entero de la humedad, los segundos 8 bits, valor decimal de la humedad, terceros 8 bits valor entero de la temperatura, cuartos 8 bits, valor decimal de la temperatura, quinto y ultimo grupo de 8 bits, suma de verificación de los cuatro anteriores para comprobar que los datos entregados no están corruptos.

Así es como quedaría el sensor integrado en la RPi A de una forma un tanto “artesanal”:

Fig.3 Raspberry Pi A + Sensor DHT11.

Fig.4 Si, es una manguera de regar y dos tacos de clavar en la pared.

 

Aquí no vais a encontrar un tutorial paso a paso, de lo que tenéis que hacer para poder desplegar este sistema en vuestra casa, soy de la opinión que estas cosas son mejor aprenderlas a hacerlas por uno mismo, ya que si simplemente nos dedicamos a copiar y pegar comandos y códigos que encontramos por Internet, nunca aprenderemos a valernos por nosotros mismos. Eso sí, si alguien quiere replicar este sistema en su casa, y no dispone de los conocimientos suficientes, que no se preocupe, este proyecto es muy sencillo, así que siguiendo los pasos que ahora voy a explicar y un par consultas a Google (o al buscador que prefiráis), estoy seguro que no tendréis ningún problema.

Decir que este mismo sistema ya hace años que lo tengo desplegado y replicado en varios lugares (de momento sin ningún fallo destacable 🙂 ), lo que ocurre es que la forma que utilizaba para replicarlo era clonar bit a bit la tarjeta SD de la RPi A y darle el ficherito de imagen de 8Gb a quien me lo pidiera, así solo tenían que meter la SD en su RPi A, cambiar la IP y un par de variables más, concertar el DHT11 y a funcionar. Lo que ocurre es que en los tiempos que corren, las RPi A ya escasean, por lo que me he decidido a explicar su instalación y funcionamiento, así se podrá replicar en cualquier versión de RPi, o en cualquier otro dispositivo similar.

Todo comenzó con un problema concreto, un sistema de climatización que no estaba conectado a un UPS y cuando se iba la electricidad, aunque fuera unos segundos, este se apagaba y no se volvía encender hasta que una persona (a poder ser humana) se diera cuenta que el sistema estaba apagado y acudiera físicamente al lugar dónde se encontraba el sistema de climatización para encenderlo pulsando el correspondiente botón. El problema es que muchas veces pasaban horas con el sistema de climatización apagado sin que nadie se diera cuenta, así que la solución fue la siguiente:

En primer lugar, realicé un croquis con un sofisticado software informático de arquitectura electrónica basado en redes neuronales e Inteligencia Artificial, plasmando todo ello con un plóter sobre un papel milimetrado. (servilleta de papel y un boligrafo Bic). Este es el diseño original del proyecto:


Fig.5 Diseño conceptual del proyecto.

 

El funcionamiento es el siguiente:

1.) Conectamos el sensor DHT11 directamente a nuestra RPi, con sus correspondencias: VCC (3,3V), GND (Ground) y GPIO, en este caso al PIN 7 que corresponde al GPIO 4. Como estoy utilizado el sensor DHT11 con la placa PCB, no es necesario añadir ninguna resistencia a mayores. Luego nos descargamos nuestro querido Wiringpi http://wiringpi.com/ para poder interactuar con los GPIO de la RPi. También nos descargaremos un script que permita controlar el sensor DHT11, por ejemplo Este Script: dht11.c”  (Siento no poder indicar el nombre del creador del Script, no lo he logrado encontrar). Ahora solamente tendremos que llamar al script con el comando: ./dht11 (o el nombre que le hayáis dado) y nos mostrará por pantalla la humedad relativa del ambiente y la temperatura en grados Celsius que el sensor acaba de medir.

Fig.6 Salida del script DHT11 mostrando humedad (rojo) y temperatura (azul).

 

2.) Una vez que ya hemos conseguir hacer funcionar el sensor, el siguiente paso es ir almacenando las mediciones en un fichero de log, en este caso lo he decidido hacer con el crontab del propio Linux. Añadimos la siguiente linea en el cron de nuestro sistema: 15,30,45,59 * * * * echo `date +\%Y\%m\%d\%H\%M\%S`,`/home/scriptsensor/dht11` >> /home/pi/temp.log Lo que hace esta línea es muy sencillo, a las y cuarto, y media, menos cuarto y en punto, se ejecutará el comando echo `date +\%Y\%m\%d\%H\%M\%S`,`/home/scriptsensor/dht11` >> /home/pi/temp.log Este comando añade la fecha y la hora, antes del registro de medición del sensor DHT11 y vuelca su salida al fichero temp.log, todo esto se ejecutará automáticamente cada 15 minutos, antes lo tenía para que realizara las mediciones cada segundo, pero el tamaño del log se me disparaba, quizás 15 minutos sea mucho tiempo, esto ya es cuestión de cada cual lo adapte a sus necesidades.


Fig.7 Linea cron Linux

 


Fig.8 Extracto del fichero “temp.log”

 

3.) Ahora nos instalamos un servidor web en la propia RPi, por ejemplo Apache, este servidor lo vamos a utilizar para mostrar de una forma más visual las mediciones que el sensor va realizando. Para ello voy a utilizar un código PHP que dividiré en dos partes, la primera, nos mostrará la temperatura actual (la última medición que ha tomado en sensor) por pantalla, y debajo, una pequeña valoración de esta temperatura, es decir, si es una temperatura ideal, si es una temperatura alta para el lugar en el que se encuentra o si ya hemos entrado en un temperatura critica. Esta función la podemos hacer con este sencillo código PHP, simplemente toma el fichero temp.log y en función de la última medición, muestra una leyenda u otra.


Fig.9 Extracto del código php que gestiona la página web.

 

De este modo es como se irían mostrando las distintas “fases” o estados de la temperatura de nuestro CPD:


Fig.10 CPD a temperatura normal.

 


Fig.11 CPD a temperatura alta.

 


Fig.12 CPD a temperatura crítica.

 

4.) Si os habéis fijado en el código php, el valor de temperatura y humedad lo toma directamente de temp.log, que en este caso se encuentra en el directorio /var/www/html/ (localización por defecto que configura Apache), pero la tarea del Cron, el fichero temp.log lo guardaba en /home/pi/ – ¿Cómo puede ser que funcione entonces si son ficheros distintos?. – Muy sencillo, con un enlace simbólico entre ambos ficheros. Si alguien se está preguntando por qué utilizo un enlace simbólico en vez de almacenar directamente el fichero de log en la ubicación en el que se va a consultar, esa misma pregunta me la estoy haciendo yo ahora mismo. Como ya dije antes, esto ya hace unos años que lo monté, y ahora no tengo ni idea de por qué lo hice así (Golpe de remo por no documentar los proyectos), pero basándome en la segunda ley de la informática, que dice que si algo funciona, no lo toques y como el enlace simbólico funciona correctamente, ni lo miro, ahí se queda.


Fig.13 Inexplicable enlace simbólico.

 

5.) La segunda parte de la página web, es una gráfica que muestra de una forma muy ilustrativa los distintos valores de temperatura y humedad que el sensor ha ido registrando durante todo el tiempo que lleva funcionando, la gráfica se puede obtener sin muchas complicaciones gracias al trabajo realizado por Dygraphs, desde su página web http://dygraphs.com/ podréis descargar el código necesario para implementar esta gráfica en vuestro proyecto.

Como sabéis, no me dedico al desarrollo de código ni a la programación, solo sé lo suficiente como para que las “cosas” funcionen y no den más “petes” de los necesarios 😉 . Un vez avisados. En Este Enlace podréis descargar el código PHP: “indexPUBLICO.php que escribí para diseñar la web de este proyecto, como veis es un código muy básico, pero que cumple con su objetivo perfectamente.


Fig.14 Web del proyecto.

 

Hasta aquí llega la primera parte de este artículo. En la segunda parte os explicaré cómo añadir otra funcionalidad al proyecto, un BOT de Telegram con el que podremos interactuar para que nos mantenga informados sobre las condiciones ambientales del CPD, incluso lo automatizaremos para que si la temperatura sube por encima de un valor máximo, el sistema nos alerte automáticamente mediante un mensaje de Telegram.

Salu2

Manuel Guerra

Manuel Guerra

Mi nombre es Manuel Guerra. Investigador especializado en: [eCrime] | [Forensic] && [Hacking]. Editor de GLIDER.es

Navegación de la entrada


Comentarios

  • Smaug

    Yo creo que tengo la respuesta al misterio del enlace simbólico. Seguramente fué algo así:
    Hago la parte uno, bien funciona.
    Hago la parte dos, tengo que cambiar el cron, uff que pereza. Enlace simbolico al canto.

    Vamos, seguro que fué la vagueza inherente del informático XD

  • Sergio

    Pos…lo del enlace igual fue mas bien por tema de permisos…. Me suena que en las carpetas de apache es http://www.data el que puede escribir y mucha gente prefiere enlaces simbólicos antes que tocar permisos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>