Найти в Дзене

Zabbix — cannot connect to IPMI host: [22] Invalid argument

Сегодня разбираю ошибку в 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. Исправление было

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

Если в Zabbix получать значения сенсоров под пользователем с правами администратора, то всё работает:

-2

И через ipmitool сенсоры выводятся:

ipmitool -I lanplus -H servername.domain.local -U 'zabbix' -P'ПАРОЛЬ' -L USER sensor list

Светить пароль администратора в Zabbix небезопасно.

Однако, если мы заводим на сервере пользователя без прав администратора, то картина меняется.

-3

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

Источник:

Zabbix — cannot connect to IPMI host: [22] Invalid argument | internet-lab.ru

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу. Пишите комментарии, задавайте вопросы, подписывайтесь.