7 Sensor

Cada chip sensor tiene su propio directorio en el árbol sysfs /sys/devices. Para encontrar todos los chips de sensores, es más fácil seguir los enlaces simbólicos del dispositivo. de /sys/class/hwmon/hwmon*, donde * es un número real (0,1,2,...).

Las lecturas del sensor se encuentran en el directorio /sys/class/hwmon/hwmon*/ para dispositivos virtuales, o en el directorio /sys/class/hwmon/hwmon*/device para dispositivos no virtuales. Un archivo, llamado "name", ubicado dentro los directorios hwmon* o hwmon*/device contienen el nombre del chip, que corresponde al nombre del controlador del kernel utilizado por el chip sensor.

Sólo hay un valor de lectura del sensor por archivo. El esquema común para nombrar los archivos que contienen lecturas de sensores dentro de cualquiera de los directorios mencionados anteriormente es: <tipo><número>_<elemento>, donde

  • tipo - para chips de sensores es "in" (voltaje), "temp" (temperatura), "fan" (ventilador), etc.,
  • elemento - "input" (valor medido), "max" (umbral alto), "min" (umbral bajo), etc.,
  • número - siempre se utiliza para elementos que pueden estar presentes más de una vez (generalmente comienza desde 1, excepto para voltajes que comienzan desde 0). Si los archivos no hacen referencia a un elemento específico tienen una simple nombre sin número.

La información sobre los sensores disponibles en el equipo se puede obtener usando herramientas como sensor-detect y sensors (paquete lm-sensors: http://lm-sensors.org/). La detección de sensores ayuda a determinar qué módulos son necesarios para los sensores disponibles. Cuando los módulos están cargados, el programa sensors se puede utilizar para mostrar las lecturas de todos los chips sensores. El etiquetado de lecturas de sensores, utilizado por este programa, puede ser diferente del esquema de nomenclatura común (<tipo><número>_<elemento> ):

  • si hay un archivo llamado <tipo><número>_label, entonces se utilizará la etiqueta dentro de este archivo en lugar de <tipo><número><elemento> nombre;
  • si no hay ningún archivo <tipo><número>_label, entonces el programa busca dentro de /etc/sensors.conf (también podría ser /etc/sensors3.conf, o diferente) para la sustitución del nombre.

Este etiquetado permite al usuario determinar qué tipo de hardware se utiliza. Si no hay ningún archivo <tipo><número>_label ni etiqueta dentro del archivo de configuración, el tipo de hardware puede ser determinado por el atributo de nombre (hwmon*/dispositivo/nombre). Los nombres reales de los sensores, que zabbix_agent acepta, se puede obtener ejecutando el programa sensors con parámetro -u (sensores -u).

En el programa sensor los sensores disponibles están separados por el bus tipo (adaptador ISA, adaptador PCI, adaptador SPI, dispositivo virtual, interfaz ACPI, adaptador HID).

En Linux 2.4:

(Las lecturas del sensor se obtienen del directorio /proc/sys/dev/sensors)

  • dispositivo - nombre del dispositivo (si se utiliza <modo>, es un modo normal expresión);
  • sensor - nombre del sensor (si se usa <modo>, es un modo normal expresión);
  • modo - valores posibles: avg, max, min (si este parámetro es (se omite, el dispositivo y el sensor se tratan palabra por palabra).

Clave de ejemplo: sensor[w83781d-i2c-0-2d,temp1]

Antes de Zabbix 1.8.4, se usaba el formato sensor[temp1].

En Linux 2.6+:

(Las lecturas del sensor se obtienen del directorio /sys/class/hwmon)

  • dispositivo - nombre del dispositivo (expresión no regular). El nombre del dispositivo podría ser el nombre real del dispositivo (por ejemplo, 0000:00:18.3) o el nombre adquirido mediante el programa de sensores (por ejemplo, k8temp-pci-00c3). Le corresponde al usuario elegir qué nombre utilizar;
  • sensor - nombre del sensor (expresión no regular);
  • modo - valores posibles: avg, max, min (si este parámetro se omite, el dispositivo y el sensor se tratan palabra por palabra).

Clave de ejemplo:

sensor[k8temp-pci-00c3,temp,max] o sensor[0000:00:18.3,temp1]

sensor[smsc47b397-isa-0880,in,avg] o sensor[smsc47b397.2176,in1]

Obtención de nombres de sensores

Las etiquetas de los sensores, tal como las imprime el comando sensors, no siempre se pueden utilizarse directamente porque la denominación de las etiquetas puede ser diferente para cada proveedor de chips sensores. Por ejemplo, la salida de sensors podría contener las siguientes líneas:

$ sensors
       in0:+2.24 V(min =+0.00 V, max =+3.32 V)
       Vcore:+1.15 V(min =+0.00 V, max =+2.99 V)
       +3.3V:+3.30 V(min =+2.97 V, max =+3.63 V)
       +12V:+13.00 V(min =+0.00 V, max = +15.94 V)
       M/B Temp:+30.0°C(low= -127.0°C, high = +127.0°C)

De estas, sólo se podrá utilizar una etiqueta directamente:

$ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,in0]
       2.240000

Intentar utilizar otras etiquetas (como Vcore o +12V) no funcionará.

$ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,Vcore]
       ZBX_NOTSUPPORTED

Para averiguar el nombre real del sensor, que Zabbix puede utilizar para recuperar las lecturas del sensor, ejecute sensors -u. En la salida, se puede observar lo siguiente:

$ sensors -u
       ...
       Vcore:
         in1_input: 1.15
         in1_min: 0.00
         in1_max: 2,99
         in1_alarm: 0.00
       ...
       +12V:
         in4_input: 13.00
         in4_min: 0,00
         in4_max: 15,94
         in4_alarm: 0.00
       ...

Por lo tanto, Vcore debe consultarse como in1 y +12V debe consultarse como in4. Según la especificación, estos son voltajes en los pines del chip y, en términos generales, pueden necesitar escalado.

$ zabbix_get -s 127.0.0.1 -k sensor[lm85-i2c-0-2e,in1]
       1.301000

Zabbix no solo puede recuperar lecturas de voltaje (in), sino también de corriente (curr), temperatura (temp) y velocidad del ventilador (fan).