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