Esta página incluye contenido traducido automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

6 Sensor

Cada chip de sensor obtiene 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 de dispositivos desde /sys/class/hwmon/hwmon*, donde * es un número real (0,1,2,...).

Las lecturas de los sensores 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 de los directorios hwmon* o hwmon*/device contiene el nombre del chip, que corresponde al nombre del controlador del kernel utilizado por el chip del sensor.

Solo hay un valor de lectura de sensor por archivo. El esquema común para nombrar los archivos que contienen las lecturas de los sensores dentro de cualquiera de los directorios mencionados anteriormente es: <type><number>_<item>, donde

  • type - para chips de sensores es "in" (voltaje), "temp" (temperatura), "fan" (ventilador), etc.
  • item - "input" (valor medido), "max" (umbral alto), "min" (umbral bajo), etc.
  • number - siempre se usa 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 se refieren a un elemento específico, tienen un nombre simple sin número.

La información sobre los sensores disponibles en el host se puede obtener utilizando las herramientas sensor-detect y sensors (paquete lm-sensors: http://lm-sensors.org/). Sensors-detect 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 de sensores. El etiquetado de las lecturas de los sensores, utilizado por este programa, puede ser diferente del esquema de nombres común (<type><number>_<item>):

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

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

En el programa sensor los sensores disponibles se separan por tipo de bus (adaptador ISA, adaptador PCI, adaptador SPI, dispositivo virtual, interfaz ACPI, adaptador HID).

Overview

Each sensor chip gets its own directory in the sysfs /sys/devices tree. To find all sensor chips, it is easier to follow the device symlinks from /sys/class/hwmon/hwmon*, where * is a real number (0,1,2,...).

The sensor readings are located either in /sys/class/hwmon/hwmon*/ directory for virtual devices, or in /sys/class/hwmon/hwmon*/device directory for non-virtual devices. A file, named name, located inside hwmon* or hwmon*/device directories contains the name of the chip, which corresponds to the name of the kernel driver used by the sensor chip.

There is only one sensor reading value per file. The common scheme for naming the files that contain sensor readings inside any of the directories mentioned above is: <type><number>_<item>, where

  • type - for sensor chips is "in" (voltage), "temp" (temperature), "fan" (fan), etc.
  • item - "input" (measured value), "max" (high threshold), "min" (low threshold), etc.
  • number - always used for elements that can be present more than once (usually starts from 1, except for voltages which start from 0). If files do not refer to a specific element they have a simple name with no number.

The information regarding sensors available on the host can be acquired using sensors-detect and sensors tools (lm-sensors package). Sensors-detect helps to determine which modules are necessary for available sensors. When modules are loaded the sensors program can be used to show the readings of all sensor chips. The labeling of sensor readings, used by this program, can be different from the common naming scheme (<type><number>_<item> ):

  • if there is a file called <type><number>_label, then the label inside this file will be used instead of <type><number><item> name;
  • if there is no <type><number>_label file, then the program searches inside the /etc/sensors.conf (could be also /etc/sensors3.conf, or different) for the name substitution.

This labeling allows user to determine what kind of hardware is used. If there is neither <type><number>_label file nor label inside the configuration file the type of hardware can be determined by the name attribute (hwmon*/device/name). The actual names of sensors, which zabbix_agent accepts, can be obtained by running sensors program with -u parameter (sensors -u).

In the sensors program the available sensors are separated by the bus type (ISA adapter, PCI adapter, SPI adapter, Virtual device, ACPI interface, HID adapter).

Obtención de nombres de sensores

Las etiquetas de los sensores, tal como las imprime el comando sensors, no siempre pueden usarse directamente porque la denominación de las etiquetas puede ser diferente para cada proveedor de chips de 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, solo una etiqueta puede usarse directamente:

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

Intentar usar 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 puede ser utilizado por Zabbix 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
       ...

Así que Vcore debe consultarse como in1, y +12V debe consultarse como in4. De acuerdo con la especificación, estos son voltajes en los pines del chip y, en general, pueden necesitar escalado.

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

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

Compatibility

En Linux 2.4:

(Las lecturas de los sensores se obtienen del directorio /proc/sys/dev/sensors)

  • device - nombre del dispositivo (si se usa <mode>, es una expresión regular)
  • sensor - nombre del sensor (si se usa <mode>, es una expresión regular)
  • mode - valores posibles: avg, max, min (si se omite este parámetro, device y sensor se tratan literalmente)

Ejemplo de clave: sensor[w83781d-i2c-0-2d,temp1]

En Linux 2.6+:

(Las lecturas de los sensores se obtienen del directorio /sys/class/hwmon)

  • device - nombre del dispositivo (no es una expresión regular). El nombre del dispositivo puede ser el nombre real del dispositivo (por ejemplo, 0000:00:18.3) o el nombre adquirido usando el programa sensors (por ejemplo, k8temp-pci-00c3). Depende del usuario elegir qué nombre usar.
  • sensor - nombre del sensor (no es una expresión regular).
  • mode - valores posibles: avg, max, min (si se omite este parámetro, el dispositivo y el sensor se tratan literalmente).

Ejemplo de clave:

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

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