[comment]: # ({05069cfc-05069cfc})
# 8 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 de
los directorios hwmon\* o hwmon\*/device contiene el nombre del chip,
que corresponde al nombre del controlador del kernel utilizado para el chip del 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 un
    nombre simple sin número.

La información sobre los sensores disponibles en el equipo se puede obtener
usando herramientas **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 del nombre
    <tipo><número><elemento> ;
-   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 ni 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 tipo de bus (adaptador ISA, adaptador PCI, adaptador SPI, dispositivo virtual, ACPI
interfaz, adaptador HID).

[comment]: # ({/05069cfc-05069cfc})

[comment]: # ({61bf6279-61bf6279})
##### 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\].

[comment]: # ({/61bf6279-61bf6279})

[comment]: # ({2e1edda6-2e1edda6})
##### 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\]

[comment]: # ({/2e1edda6-2e1edda6})

[comment]: # ({3af7f5c1-0cb28aa9})
#### Obtención de nombres de sensores

Las etiquetas de sensores, tal como se imprimen con el comando *sensors*, no siempre se pueden
utilizar directamente porque el nombre de las etiquetas puede ser diferente para cada
proveedor de chip sensor. 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 se puede usar una etiqueta 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 Zabbix puede usar 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](https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface), 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).

[comment]: # ({/3af7f5c1-0cb28aa9})
