Сегодня разбираю ошибку в Zabbix, когда он не может получить значения IPMI сенсоров. Всё это выглядит очень занимательно.
Если в Zabbix получать значения сенсоров под пользователем с правами администратора, то всё работает:

И через ipmitool сенсоры выводятся:
ipmitool -I lanplus -H servername.domain.local -U 'zabbix' -P'ПАРОЛЬ' -L USER sensor listСветить пароль администратора в Zabbix небезопасно.
Однако, если мы заводим на сервере пользователя без прав администратора, то картина меняется.

Zabbix в некоторых случаях не может получить данные с ошибкой:
cannot connect to IPMI host: [22] Invalid argument
А ipmitool прекрасно справляется с задачей:
ipmitool -I lanplus -H servername.domain.local -U 'zabbix' -P'ПАРОЛЬ' -L USER sensor listРасследование привело к тому, что проблема в библиотеке OpenIPMI (версии до 2.0.24) в дистрибутивах Debian, Ubuntu, Mint. В этой библиотеке был дефект, связанный с обработкой уровня привилегий при подключении к некоторым устройствам IPMI.
Исправление было внесено в версии OpenIPMI 2.0.24.
В дистрибутивах Debian/Ubuntu пакеты OpenIPMI скомпилированы без поддержки OpenSSL (--without-openssl). Из-за этого библиотека поддерживает только самый низкий уровень привилегий IPMI — "callback" (1). Когда Zabbix (через OpenIPMI) запрашивает уровень "user" (2), BMC отвечает, что доступен только уровень "callback". Это приводит к ошибке аутентификации.
Утилита ipmitool скомпилирована с поддержкой OpenSSL и может работать с любым уровнем привилегий.
Если нет возможности обновить библиотеку OpenIPMI, можно скомпилировать более старую версию, включив поддержку OpenSSL.
cd /tmp
sudo apt-get build-dep openipmi # Установить зависимости для сборки
apt-get source openipmi
cd openipmi-2* # Перейти в каталог с исходным кодомОткрыть файл debian/rules. Найти строку, начинающуюся с ./configure. Добавить параметр --with-openssl. Удалить или закомментировать параметр --without-openssl, если он есть.
Пример исправленной строки:
CFLAGS="$(CFLAGS)" ./configure --with-openssl --host=$(DEB_HOST_GNU_TYPE) \Собрать и установить пакеты:
sudo dpkg-buildpackage
cd ..
sudo dpkg -i openipmi*.deb libopenipmi*.debПерезапустить Zabbix Server.
sudo systemctl restart zabbix-server