Каждый контроллер датчика имеет свой собственный каталог в дереве sysfs /sys/devices. Чтобы найти все контроллеры датчиков, проще перейти по символическим ссылкам на устройства из /sys/class/hwmon/hwmon*, где * — это конкретный номер (0,1,2,...).
Показания датчиков находятся либо в папке /sys/class/hwmon/hwmon*/ для виртуальных устройств, либо в папке /sys/class/hwmon/hwmon*/device для невиртуальных устройств. Файл с именем name, расположенный в папках hwmon* или hwmon*/device, содержит имя чипа, которое соответствует имени драйвера ядра, используемого контроллером датчика.
В каждом файле имеется только одно значение показания датчика. Общая схема именования файлов, которые содержат показания датчиков, внутри любой из вышеупомянутых папок: <тип><номер>_<элемент>, где
Информацию о датчиках, доступных на хосте, можно получить с помощью инструментов sensors-detect и sensors (пакет lm-sensors [en]). Sensors-detect помогает определить, какие модули необходимы для доступных датчиков. Когда модули загружены, можно использовать утилиту sensors, чтобы отобразить показания со всех контроллеров. Маркировка показаний датчиков, используемая данной утилитой, может отличаться от общепринятой схемы именования (<тип><номер>_<элемент> ):
<тип><номер>_метка, то вместо имени <тип><номер>_<элемент> будет использоваться метка внутри этого файла;<тип><номер>_метка отсутствует, то для подстановки имени утилита выполняет поиск внутри /etc/sensors.conf (также может быть /etc/sensors3.conf или другой).Эта маркировка позволяет пользователю определить тип используемого оборудования. Если нет ни файла <тип><номер>_метка, ни метки внутри файла конфигурации, то тип оборудования может быть определён по атрибуту имени (hwmon*/device/name). Реальные имена датчиков, которые воспринимает zabbix_agent, можно получить, запустив утилиту sensors с параметром «-u» (sensors -u).
В утилите sensors доступные датчики разделены по типу шины (ISA adapter, PCI adapter, SPI adapter, Virtual device, ACPI interface, HID adapter).
Метки датчиков не всегда могут быть использованы в том виде, как они выводятся утилитой sensors, т.к. у разных производителей контроллеров именование меток может отличаться. Например, вывод утилиты sensors может содержать следующие строки:
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)Из них только одно отображаемое имя напрямую соответствует внутреннему идентификатору:
Попытки использовать остальные отображаемые метки (такие как Vcore или +12V) работать не будут.
Чтобы найти внутренний идентификатор датчика, который воспринимает Zabbix, запустите sensors -u. В полученном выводе можно увидеть следующее:
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
...Таким образом, метка Vcore соответствует идентификатору in1, а +12V соответствует in4. Согласно спецификации [en] hwmon sysfs ядра, это напряжения на выводах микросхемы и, в общем случае, может понадобиться масштабирование.
В Zabbix можно получать не только показания напряжения (in), но также тока (curr), температуры (temp) и скорости вращения вентилятора (fan).
Показания датчиков извлекаются из папки /proc/sys/dev/sensors:
Пример ключа: sensor[w83781d-i2c-0-2d,temp1].
Показания датчиков извлекаются из папки /sys/class/hwmon:
0000:00:18.3) или именем, полученным при использовании утилиты sensors (например, k8temp-pci-00c3). Выбор того, какое из этих имён использовать, оставлен за пользователем.avg, max, min (если этот параметр не указан, устройство и сенсор обрабатываются буквально).Примеры ключей:
sensor[k8temp-pci-00c3,temp,max] или sensor[0000:00:18.3,temp1].
sensor[smsc47b397-isa-0880,in,avg] или sensor[smsc47b397.2176,in1].