[comment]: # translation:outdated

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

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

[comment]: # ({752b9468-eaab320d})
#### Przegląd

Każdy układ czujnika ma własny katalog w drzewie sysfs `/sys/devices`.
Aby znaleźć wszystkie układy czujników, łatwiej jest śledzić dowiązania symboliczne urządzeń z `/sys/class/hwmon/hwmon*`, gdzie `*` jest liczbą rzeczywistą (0,1,2,...).

Odczyty czujników znajdują się albo w katalogu `/sys/class/hwmon/hwmon*/` dla urządzeń wirtualnych, albo w katalogu `/sys/class/hwmon/hwmon*/device` dla urządzeń niewirtualnych.
Plik o nazwie `name`, znajdujący się w katalogach `hwmon*` lub `hwmon*/device`, zawiera nazwę układu, która odpowiada nazwie sterownika jądra używanego przez układ czujnika.

W każdym pliku znajduje się tylko jedna wartość odczytu czujnika.
Wspólny schemat nazewnictwa plików zawierających odczyty czujników wewnątrz dowolnego z wyżej wymienionych katalogów to: `<type><number>_<item>`, gdzie

-   **type** - dla układów czujników jest to "in" (napięcie), "temp" (temperatura), "fan" (wentylator) itd.
-   **item** - "input" (wartość zmierzona), "max" (górny próg), "min" (dolny próg) itd.
-   **number** - zawsze używany dla elementów, które mogą występować więcej niż raz (zwykle zaczyna się od 1, z wyjątkiem napięć, które zaczynają się od 0).
Jeśli pliki nie odnoszą się do konkretnego elementu, mają prostą nazwę bez numeru.

Informacje dotyczące czujników dostępnych na hoście można uzyskać za pomocą narzędzi **sensors-detect** i **sensors** ([pakiet lm-sensors](https://docs.kernel.org/hwmon/sysfs-interface.html)).
**Sensors-detect** pomaga określić, które moduły są wymagane dla dostępnych czujników.
Po załadowaniu modułów program **sensors** może zostać użyty do wyświetlenia odczytów wszystkich układów czujników.
Etykiety odczytów czujników używane przez ten program mogą różnić się od wspólnego schematu nazewnictwa (`<type><number>_<item>`):

-   jeśli istnieje plik o nazwie `<type><number>_label`, wtedy etykieta z tego pliku zostanie użyta zamiast nazwy `<type><number><item>`;
-   jeśli nie ma pliku `<type><number>_label`, program przeszukuje `/etc/sensors.conf` (może to być także `/etc/sensors3.conf` lub inny plik) pod kątem podstawienia nazwy.

To etykietowanie pozwala użytkownikowi określić, jaki rodzaj sprzętu jest używany.
Jeśli nie ma ani pliku `<type><number>_label`, ani etykiety w pliku konfiguracyjnym, typ sprzętu można określić na podstawie atrybutu name (`hwmon*/device/name`).
Rzeczywiste nazwy czujników akceptowane przez `zabbix_agent` można uzyskać, uruchamiając program **sensors** z parametrem `-u` (`sensors -u`).

W programie **sensors** dostępne czujniki są rozdzielone według typu magistrali (adapter ISA, adapter PCI, adapter SPI, urządzenie wirtualne, interfejs ACPI, adapter HID).

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

[comment]: # ({397aa635-0cb28aa9})
#### Uzyskiwanie identyfikatorów sensorów

Etykiety sensorów, wyświetlane przez polecenie `sensors`, nie zawsze mogą być używane bezpośrednio, ponieważ sposób etykietowania różni się w zależności od producenta układu.
Na przykład dane wyjściowe `sensors` mogą zawierać następujące wiersze:

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

Spośród nich tylko jedna nazwa wyświetlana odpowiada bezpośrednio identyfikatorowi wewnętrznemu:

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

Próba użycia innych etykiet wyświetlanych (takich jak `Vcore` lub `+12V`) nie zadziała:

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

Aby znaleźć wewnętrzny identyfikator sensora akceptowany przez Zabbix, uruchom `sensors -u`.
W danych wyjściowych można zaobserwować następujące elementy:

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

Zatem etykieta `Vcore` odpowiada identyfikatorowi `in1`, a `+12V` odpowiada `in4`.
Zgodnie ze [specyfikacją](https://docs.kernel.org/hwmon/sysfs-interface.html) kernel hwmon sysfs są to napięcia na pinach układu i ogólnie rzecz biorąc mogą wymagać skalowania.

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

Zabbix może pobierać nie tylko odczyty napięcia (`in`), ale także natężenia prądu (`curr`), temperatury (`temp`) i prędkości wentylatora (`fan`).

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

[comment]: # ({5b2a0096-8c111a00})
#### Zgodność

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

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

Odczyty czujników są pobierane z katalogu `/proc/sys/dev/sensors`:

-   **device** - nazwa urządzenia (jeśli użyto <mode>, jest to wyrażenie regularne)
-   **sensor** - nazwa czujnika (jeśli użyto <mode>, jest to wyrażenie regularne)
-   **mode** - możliwe wartości: `avg`, `max`, `min` (jeśli ten parametr zostanie pominięty, device i sensor są traktowane dosłownie)

Przykładowy klucz: `sensor[w83781d-i2c-0-2d,temp1]`.

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

[comment]: # ({9e54fe4b-2e1edda6})
##### Bieżące dystrybucje

Odczyty sensorów są pobierane z katalogu `/sys/class/hwmon`:

-   **device** - nazwa urządzenia (bez wyrażeń regularnych).
Nazwa urządzenia może być rzeczywistą nazwą urządzenia (np. `0000:00:18.3`) lub nazwą uzyskaną za pomocą programu sensors (np. `k8temp-pci-00c3`).
Wybór, której nazwy użyć, należy do użytkownika.
-   **sensor** - nazwa sensora (bez wyrażeń regularnych).
-   **mode** - możliwe wartości: `avg`, `max`, `min` (jeśli ten parametr zostanie pominięty, device i sensor są traktowane dosłownie).

Przykładowe klucze:

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

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

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