jueves, 26 de abril de 2012

Monitorizando temperaturas del hardware en Linux

Hace poco presentaba mi proyecto casero de instalación y configuración de un servidor de descargas de bajo consumo basado en Linux. En los próximos días desvelaré los programas utilizados para llevar a cabo y/o controlar las descargas propiamente dichas, pero hoy quiero presentar otro software que he instalado recientemente y que puede ser de mucha utilidad para cualquier tipo de servidor basado en Linux.

La monitorización de las temperaturas del hardware de PC puede ser una necesidad para los aficionados al overclocking o simplemente para cualquiera que viva en regiones calurosas y tenga el equipo funcionando durante horas. En Windows podemos usar diversas utilidades software (como SpeedFan) para ver en tiempo real las temperaturas de aquellos componentes hardware que cuentan con sensores y que suelen ser los más sensibles a temperaturas elevadas (CPU, chipset, discos duros, etc.). También suelen informar de los voltajes y velocidades de giro de los ventiladores, depende de los chips y sensores instalados.

En Linux, como no podía ser de otra forma, también hay programas para acceder a esta valiosa información, sólo tenemos que buscar en los repositorios de nuestra distribución favorita palabras como "sensors" (p. ej. en Ubuntu o Debian lo haríamos ejecutando apt-cache search sensors). En mi caso, investigue un poco los resultados obtenidos y llegué a la conclusión de que todo lo que necesitaba era instalar el paquete lm-sensors, que contiene las bibliotecas y utilidades que me permitirían configurar y leer los datos de los sensores desde la consola, requisito deseable en un servidor sin entorno gráfico.

Lo primero tras instalar el paquete (y aquellos de los que dependa) es ejecutar la utilidad de configuración sensors-detect para detectar los chips de monitorización de nuestra placa base y configurar los drivers necesarios para comunicarse con estos. Estos drivers son módulos del kernel que se añadirán a /etc/modules para cargarse durante el arranque del sistema. En mi caso eran dos, uno más genérico y otro centrado en obtener la temperatura del microprocesador (la que más me interesaba, ya que el mini-servidor no lleva disco duro).

Una vez cargados los drivers ya podemos ejecutar desde la línea de comandos el programa principal, llamado sensors, que nos volcará a pantalla las lecturas actuales de los distintos sensores. Lo bueno de tratarse de información textual es que podremos filtrarlo (usando grep, cut, etc.) para quedarnos con la parte que nos interese o incluso para comparar los datos numéricos con ciertos umbrales que decidamos para así automatizar la monitorización y notificación de posibles situaciones de sobrecalentamiento (podemos hacer que se nos envíe un mail como ilustraba en esta entrada anterior). En fin, que nunca viene mal controlar estas cosas en un ordenador que funciona desatendido, y más en los calurosos veranos de Hispanistán ;-)