[comment]: # translation:outdated

[comment]: # ({1035fd30-b33b8329})
# 6 Sensore

[comment]: # ({/1035fd30-b33b8329})

[comment]: # ({752b9468-eaab320d})
#### Panoramica

Ogni chip sensore ha una propria directory nell'albero sysfs `/sys/devices`.
Per trovare tutti i chip sensore, è più semplice seguire i collegamenti simbolici dei dispositivi da `/sys/class/hwmon/hwmon*`, dove `*` è un numero reale (0,1,2,...).

Le letture dei sensori si trovano nella directory `/sys/class/hwmon/hwmon*/` per i dispositivi virtuali, oppure nella directory `/sys/class/hwmon/hwmon*/device` per i dispositivi non virtuali.
Un file denominato `name`, situato all'interno delle directory `hwmon*` o `hwmon*/device`, contiene il nome del chip, che corrisponde al nome del driver del kernel utilizzato dal chip sensore.

Esiste un solo valore di lettura del sensore per file.
Lo schema comune per la denominazione dei file che contengono le letture dei sensori all'interno di una qualsiasi delle directory sopra menzionate è: `<type><number>_<item>`, dove

-   **type** - per i chip sensore è "in" (tensione), "temp" (temperatura), "fan" (ventola), ecc.
-   **item** - "input" (valore misurato), "max" (soglia alta), "min" (soglia bassa), ecc.
-   **number** - viene sempre utilizzato per gli elementi che possono essere presenti più di una volta (di solito inizia da 1, tranne che per le tensioni che iniziano da 0).
Se i file non si riferiscono a un elemento specifico, hanno un nome semplice senza numero.

Le informazioni relative ai sensori disponibili sul host possono essere ottenute utilizzando gli strumenti **sensors-detect** e **sensors** ([pacchetto lm-sensors](https://docs.kernel.org/hwmon/sysfs-interface.html)).
**Sensors-detect** aiuta a determinare quali moduli sono necessari per i sensori disponibili.
Quando i moduli sono caricati, il programma **sensors** può essere utilizzato per mostrare le letture di tutti i chip sensore.
L'etichettatura delle letture dei sensori, utilizzata da questo programma, può essere diversa dallo schema di denominazione comune (`<type><number>_<item>`):

-   se esiste un file chiamato `<type><number>_label`, allora l'etichetta all'interno di questo file verrà utilizzata al posto del nome `<type><number><item>`;
-   se non esiste un file `<type><number>_label`, allora il programma cerca all'interno di `/etc/sensors.conf` (può essere anche `/etc/sensors3.conf`, o diverso) la sostituzione del nome.

Questa etichettatura consente all'utente di determinare quale tipo di hardware viene utilizzato.
Se non esiste né il file `<type><number>_label` né un'etichetta all'interno del file di configurazione, il tipo di hardware può essere determinato tramite l'attributo name (`hwmon*/device/name`).
I nomi effettivi dei sensori, accettati da `zabbix_agent`, possono essere ottenuti eseguendo il programma **sensors** con il parametro `-u` (`sensors -u`).

Nel programma **sensors** i sensori disponibili sono separati in base al tipo di bus (adattatore ISA, adattatore PCI, adattatore SPI, dispositivo virtuale, interfaccia ACPI, adattatore HID).

[comment]: # ({/752b9468-eaab320d})

[comment]: # ({397aa635-0cb28aa9})
#### Ottenere gli identificatori dei sensori

Le etichette dei sensori, come stampate dal comando `sensors`, non possono sempre essere usate direttamente perché la denominazione varia tra i diversi produttori di chip.
Ad esempio, l'output di `sensors` potrebbe contenere le seguenti righe:

```bash
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)
```

Tra questi, solo un nome visualizzato corrisponde direttamente a un identificatore interno:

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

Il tentativo di usare altre etichette visualizzate (come `Vcore` o `+12V`) non funzionerà:

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

Per trovare l'identificatore interno del sensore accettato da Zabbix, eseguire `sensors -u`.
Nell'output si può osservare quanto segue:

```bash
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
...
```

Quindi l'etichetta `Vcore` corrisponde all'identificatore `in1`, e `+12V` corrisponde a `in4`.
Secondo la [specifica](https://docs.kernel.org/hwmon/sysfs-interface.html) hwmon sysfs del kernel, queste sono tensioni sui pin del chip e, in generale, potrebbero richiedere un ridimensionamento.

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

Zabbix può recuperare non solo letture di tensione (`in`), ma anche di corrente (`curr`), temperatura (`temp`) e velocità della ventola (`fan`).

[comment]: # ({/397aa635-0cb28aa9})

[comment]: # ({5b2a0096-8c111a00})
#### Compatibilità

[comment]: # ({/5b2a0096-8c111a00})

[comment]: # ({f66e4878-61bf6279})
##### Distribuzioni legacy

Le letture dei sensori vengono ottenute dalla directory `/proc/sys/dev/sensors`:

-   **device** - nome del dispositivo (se viene usato <mode>, è un'espressione regolare)
-   **sensor** - nome del sensore (se viene usato <mode>, è un'espressione regolare)
-   **mode** - valori possibili: `avg`, `max`, `min` (se questo parametro viene omesso, device e sensor vengono trattati letteralmente)

Esempio di key: `sensor[w83781d-i2c-0-2d,temp1]`.

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

[comment]: # ({9e54fe4b-2e1edda6})
##### Distribuzioni correnti

Le letture dei sensori vengono ottenute dalla directory `/sys/class/hwmon`:

-   **device** - nome del dispositivo (espressione non regolare).
Il nome del dispositivo può essere il nome effettivo del dispositivo (ad es. `0000:00:18.3`) oppure il nome ottenuto tramite il programma sensors (ad es. `k8temp-pci-00c3`).
Spetta all'utente scegliere quale nome utilizzare.
-   **sensor** - nome del sensore (espressione non regolare).
-   **mode** - valori possibili: `avg`, `max`, `min` (se questo parametro viene omesso, device e sensor vengono trattati alla lettera).

Esempi di chiavi:

`sensor[k8temp-pci-00c3,temp,max]` oppure `sensor[0000:00:18.3,temp1]`.

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

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