Zabbix, control de temperatura

La mayoría de los equipos traen sensores de temperatura que son perfectamente accesibles por el kernel. Estos sensores nos marcan la temperatura de determinadas partes del equipo, así como en algunos casos, la temperatura externa de los mismos. Los valores que estos sensores envían los vamos a monitorizar desde Zabbix, para tener controlada la temperatura y actuar en caso de que ésta aumente.
Para hacer uso de los sensores de temperatura, emplearemos el paquete sensord, el cual devuelve las temperaturas de los sensores (si están soportados), y que luego mandaremos directamente a Zabbix.
shell> apt-get install sensord
Tras la instalación del paquete, lo configuramos con sensors-detect, por si no los detectó automáticamente. Luego con el comando sensors ya podemos visualizar lo que nos devuelve.
shell> sensors
i5k_amb-isa-0000
Adapter: ISA adapter
Ch. 0 DIMM 0: +49.5°C  (low  = +105.0°C, high = +124.0°C)  
Ch. 1 DIMM 0: +50.5°C  (low  = +105.0°C, high = +124.0°C)  
Ch. 2 DIMM 0: +48.0°C  (low  = +105.0°C, high = +124.0°C)  
Ch. 3 DIMM 0: +46.0°C  (low  = +105.0°C, high = +124.0°C) 
En mi caso, tengo 4 sensores en el equipos. Lo que representa cada sensor ya depende del equipo. Para saberlo, lo mejor es mirar el manual de la placa. Lo que aquí nos interesa es simplemente sacar esos datos. Sólo para no dar lugar a equivocaciones, ejecutando este mismo comando en otro equipo, la salida es un poco diferente,
shell> sensors
coretemp-isa-0000
Adapter: ISA adapter
Core 0:       +37.0 C  (high = +87.0 C, crit = +97.0 C)
Core 1:       +34.0 C  (high = +87.0 C, crit = +97.0 C)
Core 2:       +35.0 C  (high = +87.0 C, crit = +97.0 C)
Core 3:       +33.0 C  (high = +87.0 C, crit = +97.0 C)
Como podéis observar, la salida depende mucho del fabricante de la placa, por lo que el comando a ejecutar para obtener la temperatura solamente lo tendréis que adaptar.
Para hacerlo editamos el fichero de configuración del agente Zabbix (/etc/zabbix/zabbix_agentd.conf) y creamos una nueva key personalizada, dejándola tal y como así.
UserParameter=system.temp[*], sensors | awk '/^Ch. $1/ {print substr($$5,2,4);}'
En el caso de la segunda salida, sería el mismo comando, pero un poco cambiado,
UserParameter=system.temp[*], sensors | awk '/^Core $1/ {print substr($$3,2,4);}'
Como no sabemos la cantidad de sensores que vamos a tener por equipo, lo mejor es optar por una única key parametrizada. En este caso, $1 será el sensor detectado (0, 1, etc). Por cierto, si ejecutamos el comando en una shell, el valor que nos devuelve es la temperatura actual de ese sensor. En caso de que el resultado no sea como el que sigue, tendréis que adaptar vuestra expresión awk.
shell> sensors  |  awk '/^Ch. 0/ {print substr($5,2,4);}'
49.5
Llegados aquí ya sólo queda configurar los nuevos item's en Zabbix. Tendríamos que configurar un item por cada sensor que nos interese controlar. La configuración es tal como sigue.
New key for temperature control
Lógicamente, también nos interesa tener alertas que nos avisen de que la temperatura ha subido en el equipo más de lo que debiera. Este tipo de alertas sirven para controlar el equipo y a la vez, para controlar la climatización del CPD, por ejemplo. Puesto que los item's son de tipo numérico, la expresión queda muy sencilla. En mi caso por ejemplo, me interesa que si la temperatura de un sensor pasa de 55 °C me alerte. El trigger,
Name: Temperature control fail
Expression: {Template_sensors:system.temp[0].last(0)}>55 |
            {Template_sensors:system.temp[1].last(0)}>55 |
            {Template_sensors:system.temp[2].last(0)}>55 |
            {Template_sensors:system.temp[3].last(0)}>55
Severity: Average
Enabled: True

La entrada Zabbix, control de temperatura la puedes leer en Puppet Linux.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios