This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

7 Czujnik

Każdy układ czujnika dostaje swój własny katalog w drzewie katalogów systemowych /sys/devices. Żeby znaleźć układy czujników, najlepiej jest sprawdzić linki symboliczne urządzeń z /sys/class/hwmon/hwmon*, gdzie * to liczba całkowita (0,1,2,...).

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

W każdym pliku znajduje się tylko jedna wartość odczytu czujnika. Podstawowy schemat nazywania plików zawierających odczyty czujnika wewnątrz dowolnego z powyższych katalogów jest następujący: <typ><numer>_<pozycja>, gdzie

  • typ - dla układów czujników to "in" (napięcie), "temp" (temperatura), "fan" (wentylator), itd.,
  • pozycja - "input" (wartość zmierzona), "max" (próg najwyższy), "min" (próg najniższy), itd.,
  • numer - używany zawsze dla elementów, których może być więcej niż 1 (zwykle rozpoczyna się od 1, z wyjątkiem napięcia, które zaczyna się od 0). Jeżeli plik nie odnosi się do specyficznego elementu, to ma prostą nazwę bez liczby.

Informacje o dostępnych czujnikach dla hosta można uzyskać przy użyciu narzędzi sensor-detect i sensors (pakiet lm-sensors: http://lm-sensors.org/). Sensors-detect pomaga określić, które moduły są niezbędne dla dostępnych czujników. Po załadowaniu modułów, do odczytu wartości z wszystkich układów czujników można użyć programu sensors. Nazewnictwo odczytów czujników używane przez ten program może być inne niż ogólny schemat (<typ><numer>_<pozycja>):

  • jeżeli istnieje plik o nazwie <typ><numer>_label, to zamiast nazwy <typ><numer><pozycja> zostanie użyta etykieta z tego pliku;
  • jeżeli nie istnieje plik o nazwie <typ><numer>_label, to program poszuka substytutu nazwy w pliku /etc/sensors.conf (może to być również /etc/sensors3.conf, lub inny).

Takie nazewnictwo pozwala użytkownikowi na określenie typu używanego urządzenia. Jeżeli zarówno nie istnieje plik <typ><numer>_label ani nie ma etykiety w pliku konfiguracji, typ urządzenia może być określony na podstawie atrybutu name (hwmon*/device/name). Aktualne nazwy czujników akceptowane przez zabbix_agent, można uzyskać uruchamiając program sensors z parametrem -u (sensors -u).

W programie sensor dostępne czujniki są podzielone według typu szyny (ISA adapter, PCI adapter, SPI adapter, Virtual device, ACPI interface, HID adapter).

W Linux 2.4:

(Odczyty czujników są pobierane z katalogu /proc/sys/dev/sensors)

  • urządzenie - nazwa urządzenia (jeżeli użyto <tryb>, jest to wyrażenie regularne);
  • czujnik - nazwa czujnika (jeżeli użyto <tryb>, jest to wyrażenie regularne);
  • tryb - możliwe wartości: avg, max, min (jeżeli parametr ten jest pominięty, urządzenie i czujnik są traktowane dosłownie).

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

Do Zabbix 1.8.4, używany był format sensor[temp1].

W Linux 2.6+:

(Odczyty czujników są pobierane z katalogu /sys/class/hwmon)

  • urządzenie - nazwa urządzenia (nie wyrażenie regularne). Nazwą urządzenia może być faktyczna jego nazwa (np. 0000:00:18.3) lub nazwa zwracana z programu sensors (np. k8temp-pci-00c3). Tylko od użytkownika zależy, która nazwa zostanie użyta;
  • czujnik - nazwa czujnika (nie wyrażenie regularne);
  • tryb - możliwe wartości: avg, max, min (jeżeli parametr ten jest pominięty, urządzenie i czujnik 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]

Pobieranie nazw czujników

Etykiety czujników wyświetlane poleceniem sensors nie zawsze mogą być użyte bezpośrednio, ze względu na to, że nazewnictwo etykiet może się różnić w zależności od dostawcy układu czujnika. Na przykład, wyjście 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)

Z powyższego, tylko jednej etykiety można użyć bezpośrednio:

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

Próba użycia innych etykiet (np. Vcore lub +12V) nie powiedzie się.

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

Żeby odszukać prawdziwą nazwę czujnika, której Zabbix mógłby użyć do odczytu jego wartości, należy uruchomić sensors -u. W wyniku można zaobserwować np.:

$ 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 Vcore powinno być odczytywane przez in1, a +12V przez in4.1

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

Oprócz Napięcia (in) Zabbix może odczytywać również natężenie (curr), temperaturę (temp) i prędkość wiatraczków (fan).


  1. Zgodnie ze specyfikacją są to napięcia na nóżkach układu i ogólnie rzecz biorąc można je regulować.↩︎