6 Czujnik
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).
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.conflub 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).
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:
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:
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:
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:
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ą kernel hwmon sysfs są to napięcia na pinach układu i ogólnie rzecz biorąc mogą wymagać skalowania.
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).
Zgodność
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].
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].