[comment]: # translation:outdated

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

Każdy chip sensora ma swój własny katalog w drzewie sysfs /sys/devices.
Aby znaleźć wszystkie chipy sensorów, łatwiej jest skorzystać z dowiązań symbolicznych urządzenia
z /sys/class/hwmon/hwmon\*, gdzie \* jest liczbą rzeczywistą (0,1,2,...).

Odczyty sensoró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ę wewnątrz
katalogów hwmon\* lub hwmon\*/device, zawiera nazwę chipa,
która odpowiada nazwie sterownika jądra używanego przez chip 
sensora.

Istnieje tylko jedna wartość odczytu sensora na plik. Wspólny schemat
nazewnictwa plików zawierających odczyty sensorów w każdym z
wyżej wymienionych katalogów jest następujący:
<type><number>\_<item>, gdzie

-   **type** - dla chipów sensorów to "in" (napięcie), "temp" (temperatura),
    "fan" (wentylator), itp.,
-   **item** - "input" (wartość mierzona), "max" (górny próg), "min"
    (dolny próg), itp.,
-   **number** - zawsze używany dla elementów, które mogą występować więcej
    niż jeden raz (zazwyczaj 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 dostępnych sensorów na hoście można uzyskać
z użyciem narzędzi **sensor-detect** i **sensors** (pakiet lm-sensors:
<http://lm-sensors.org/>). **Sensors-detect** pomaga określić, które
moduły są potrzebne do dostępnych sensorów. Po załadowaniu modułów
program **sensors** może być używany do pokazywania odczytów wszystkich
sensorów chipów. Etykietowanie odczytów sensorów, używane przez ten
program, może różnić się od wspólnego schematu nazewnictwa
(<type><number>\_<item> ):

-   jeśli istnieje plik o nazwie <type><number>\_label, to
    zostanie użyta etykieta znajdująca się w tym pliku zamiast
    nazwy <type><number><item>;
-   jeśli nie ma pliku <type><number>\_label, to
    program szuka wewnątrz /etc/sensors.conf (może być również
    /etc/sensors3.conf lub inny) w celu podstawienia nazwy.

To etykietowanie pozwala użytkownikowi określić, jaki rodzaj sprzętu jest używany. Jeśli
nie ma pliku <type><number>\_label ani etykiety wewnątrz
pliku konfiguracyjnego, rodzaj sprzętu można określić przez
atrybut name (hwmon\*/device/name). Faktyczne nazwy sensorów, które
akceptuje agent zabbix, można uzyskać uruchamiając program **sensors**
z parametrem -u (**sensors -u**).

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

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

[comment]: # ({61bf6279-61bf6279})
##### Na Linux 2.4:

(Odczyty sensorów są uzyskiwane z katalogu /proc/sys/dev/sensors)

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

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

Przed wersją Zabbix 1.8.4 używany był format sensor\[temp1\].

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

[comment]: # ({2e1edda6-2e1edda6})
##### Na Linux 2.6+:

(Odczyty sensorów są uzyskiwane 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). Użytkownik
    może wybrać, którą nazwę chce używać;
-   **sensor** - nazwa sensora (bez wyrażeń regularnych);
-   **mode** - możliwe wartości: avg, max, min (jeśli ten parametr jest
    pominięty, urządzenie i sensor są traktowane dosłownie).

Przykładowy klucz:

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

[comment]: # ({0cb28aa9-0cb28aa9})
#### Pozyskiwanie nazw sensorów

Etykiety sensorów, tak jak są wyświetlane przez polecenie *sensors*, nie zawsze mogą być
używane bezpośrednio, ponieważ nazewnictwo etykiet może się różnić w zależności od
producenta chipa sensoru. Na przykład, wynik polecenia *sensors* może zawierać
następujące linie:

    $ 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 etykieta może być użyta bezpośrednio:

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

Próba użycia innych etykiet (takich jak *Vcore* lub *+12V*) nie będzie działać.

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

Aby dowiedzieć się rzeczywistej nazwy sensora, która może być używana przez Zabbix do
pobrania odczytów z sensora, należy uruchomić *sensors -u*. W wyniku, można zobaczyć
następujący wynik:

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

Więc *Vcore* powinno być zapytane jako *in1*, a *+12V* jako 
*in4*.[^1]

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

Nie tylko napięcie (in), ale również odczyty prądu (curr), temperatury (temp) oraz
prędkości wentylatorów (fan) mogą być pobierane przez Zabbix.

[^1]: Zgodnie z
    [specyfikacją](https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface)
    są to napięcia na pinach chipa i zazwyczaj mogą wymagać 
    skalowania.

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