[comment]: # ({8402b962-52403269})
# 10. Проверка IPMI

[comment]: # ({/8402b962-52403269})

[comment]: # ({cf103984-2f30e610})
#### Обзор

Вы можете наблюдать за состоянием и доступностью устройств Intelligent Platform Management Interface (IPMI) в Zabbix. Для выполнения проверок по IPMI Zabbix сервер должен быть изначально [сконфигурирован](/manual/installation/install#сконфигурируйте-исходный-код) с поддержкой IPMI.

IPMI — стандартизованный интерфейс для удаленного «lights-out» или «out-of-band» управления компьютерными системами. Он позволяет наблюдать за состоянием оборудования напрямую с так называемых карт управления «out-of-band», независимо от операционной системы или же от наличия питания на машине.

Zabbix IPMI мониторинг работает только с устройствами, имеющими поддержку IPMI (HP iLO, DELL DRAC, IBM RSA, Sun SSP и т.п.).

Процесс IPMI менеджер выполняет планирование проверок IPMI для IPMI поллеров. Узел сети всегда опрашивается только одним IPMI поллером за раз, уменьшая количество открытых подключений к контроллерам BMC. Благодаря этим изменениям можно безопасно увеличивать количество IPMI поллеров, не беспокоясь о перегрузке BMC контроллеров. Процесс IPMI менеджер автоматически запускается, если запускается хотя бы один IPMI поллер.

Смотрите также [известные проблемы](/manual/installation/known_issues#ipmi-проверки) по IPMI проверкам.

[comment]: # ({/cf103984-2f30e610})

[comment]: # ({5d32b87c-5d32b87c})
#### Настройка

[comment]: # ({/5d32b87c-5d32b87c})

[comment]: # ({4f35db5e-4f35db5e})
##### Настройка узла сети

Узел сети необходимо настроить для обработки проверок IPMI. Нужно добавить интерфейс IPMI, с соответствующими IP адресом и номером порта, а также задать параметры аутентификации IPMI.

Смотрите [настройку узлов сети](/manual/config/hosts/host) для получения более подробных сведений.

[comment]: # ({/4f35db5e-4f35db5e})

[comment]: # ({f7bb9e76-f7bb9e76})
##### Настройка сервера

По умолчанию, Zabbix сервер не запускает IPMI поллеры, поэтому любые добавленные элементы данных IPMI не будут работать. Чтобы изменить это, откройте файл конфигурации ([zabbix\_server.conf](/manual/appendix/config/zabbix_server)) Zabbix сервера из-под root и найдите следующую строку:

    # StartIPMIPollers=0

Раскомментируйте эту строку и задайте количество поллеров, скажем, равное 3 так, чтобы строка была такой:

    StartIPMIPollers=3

Сохраните файл, после чего перезапустите zabbix\_server.

[comment]: # ({/f7bb9e76-f7bb9e76})

[comment]: # ({b0db4658-b0db4658})
##### Настройка элемента данных

Для [настройки элемента данных](/manual/config/items/item) на уровне узла сети:

-   В поле *Тип* выберите «IPMI агент»
-   Введите [ключ](/manual/config/items/item/key) элемента данных, уникальный в пределах узла сети (скажем, ipmi.fan.rpm)
-   В поле *Интерфейс узла сети* выберите подходящий IPMI интерфейс (IP и порт). Обратите внимание, IPMI интерфейс должен уже существовать на узле сети.
-   Укажите *IPMI датчик*, с которого забирать метрику (например, «FAN MOD 1A RPM» на Dell Poweredge). По умолчанию, необходимо указать ID датчика. Также имеется возможность использования префиксов до самого значения:
    -   `id:` — чтобы указать ID датчика;
    -   `name:` — чтобы указать полное имя датчика. Эта опция может быть полезна в ситуациях, когда датчики можно отличить, только указав полное имя.
-   Выберите соответствующий тип информации («Числовой (с плавающей точкой)» в данном случае; для дискретных датчиков — «Числовой (целое положительное)»), единицы измерения (скорее всего, «rpm») и любые другие требуемые атрибуты элемента данных.

[comment]: # ({/b0db4658-b0db4658})

[comment]: # ({20080418-af2b187b})
##### Поддерживаемые проверки

IPMI агент поддерживает встроенный элемент данных **ipmi.get**, который возвращает информацию, связанную с датчиком IPMI, и может использоваться для [обнаружения датчиков IPMI](/manual/discovery/low_level_discovery/examples/ipmi_sensors#обзор).<br>
Возвращаемое значение: *объект JSON*

[comment]: # ({/20080418-af2b187b})

[comment]: # ({e085a816-1e03516a})
#### Время ожидания и завершение сессии

Время ожидания IPMI сообщений и количества попыток определены в библиотеке OpenIPMI. В связи с текущим дизайном OpenIPMI, невозможно сделать эти значения настраиваемыми из Zabbix, ни на уровне интерфейса, ни на уровне элемента данных.

Время ожидания неактивности IPMI сессии для LAN равняется 60 +/-3 секунд. В настоящее время невозможно реализовать периодическую отправку команды Активации Сессии в OpenIPMI. Если проверки IPMI элементов данных от Zabbix к конкретному BMC не выполняются в течение времени, большего, чем время ожидания сессии, настроенное в BMC, то следующая проверка IPMI после истечения времени ожидания приведёт к ошибкам из-за превышения времени ожидания отдельного сообщения, повторных попыток или ошибке при получении. После этого открывается новая сессия и инициируется полное повторное сканирование BMC. Для управления новой сессией может быть открыт новый порт UDP. Неактивность определяется как отсутствие и исходящих запросов, и входящих ответов. Если вы хотите избежать лишнего сканирования BMC, рекомендуется установить интервал опроса элементов данных IPMI ниже времени ожидания неактивности IPMI сессии, настроенного в BMC.

[comment]: # ({/e085a816-1e03516a})

[comment]: # ({e74a6a61-3ea36861})
#### Примечания о дискретных датчиках IPMI

Для поиска датчиков на узле сети запустите Zabbix сервер с включённым **DebugLevel=4**. Подождите пару минут и поищите записи об обнаруженных датчиках в журнале Zabbix сервера:

    $ grep 'Added sensor' zabbix_server.log
    8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:7 id:'CATERR' reading_type:0x3 ('discrete_state') type:0x7 ('processor') full_name:'(r0.32.3.0).CATERR'
    8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'CPU Therm Trip' reading_type:0x3 ('discrete_state') type:0x1 ('temperature') full_name:'(7.1).CPU Therm Trip'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'System Event Log' reading_type:0x6f ('sensor specific') type:0x10 ('event_logging_disabled') full_name:'(7.1).System Event Log'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'PhysicalSecurity' reading_type:0x6f ('sensor specific') type:0x5 ('physical_security') full_name:'(23.1).PhysicalSecurity'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'IPMI Watchdog' reading_type:0x6f ('sensor specific') type:0x23 ('watchdog_2') full_name:'(7.7).IPMI Watchdog'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'Power Unit Stat' reading_type:0x6f ('sensor specific') type:0x9 ('power_unit') full_name:'(21.1).Power Unit Stat'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Ctrl %' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.1).P1 Therm Ctrl %'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.2).P1 Therm Margin'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 2' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 2'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 3' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 3'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'P1 Mem Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).P1 Mem Margin'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'Front Panel Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Front Panel Temp'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'Baseboard Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Baseboard Temp'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +5.0V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +5.0V'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +3.3V STBY' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V STBY'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +3.3V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.5V P1 DDR3' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.5V P1 DDR3'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.1V P1 Vccp' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.1V P1 Vccp'
    8358:20130318:111122.174 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +1.05V PCH' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.05V PCH'

Для расшифровки типов датчиков IPMI и их состояний доступна копия [спецификации IPMI 2.0 \[en\]](https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf) (пожалуйста, обратите внимание, что [не планируется дальнейших обновлений \[en\]](http://www.intel.com/content/www/us/en/servers/ipmi/ipmi-specifications.html) к спецификации IPMI).

Начнем с параметра «тип\_чтения» (reading\_type). Для расшифровки кода «reading\_type» используйте раздел «Table 42-1, Event/Reading Type Code Ranges» из спецификации. Большинство датчиков из нашего примера имеют «reading\_type:0x1», означающих «порог» датчика. «Table 42-3, Sensor Type Codes» показывает, что «type:0x1» — датчик температуры, «type:0x2» — датчик напряжения, «type:0x4» — датчик частоты вращения вентилятора системы охлаждения и так далее. Пороговые датчики иногда называют «аналоговыми» датчиками, так как они измеряют непрерывные параметры, такие как температуру, напряжение, частоту вращения в минуту.

Другой пример — датчик с «reading\_type:0x3». «Table 42-1, Event/Reading Type Code Ranges» говорит, что коды типов чтения 02h-0Ch означают «Общий Дискретный» датчик. Дискретные датчики имеют до 15 возможных состояний (другими словами — до 15 значащих бит). К примеру, для датчика «CATERR» с «type:0x7» «Table 42-3, Sensor Type Codes» показывает, что этот тип обозначает «Процессор» и значение отдельных битов: 00h (наименьший значащий бит) — IERR (внутренняя ошибка процессора), 01h — Перегрев процессора и т.д.

В нашем примере есть несколько датчиков с «reading\_type:0x6f». Для этих датчиков «Table 42-1, Event/Reading Type Code Ranges» советует использовать «Table 42-3, Sensor Type Codes» для расшифровки значений битов. Например, датчик «Power Unit Stat» имеет тип «type:0x9», который означает «Блок питания». Смещение 00h означает «Выключено/Обесточено». Другими словами, если младший значащий бит равен 1, то сервер выключен. Для проверки этого бита можно воспользоваться функцией [``bitand``](/manual/appendix/functions/bitwise#bitand) с маской «1». Выражение триггера для предупреждения о выключенном сервере может выглядеть следующим образом:

       bitand(last(/www.example.com/Power Unit Stat,#1),1)=1

[comment]: # ({/e74a6a61-3ea36861})

[comment]: # ({761eb9da-761eb9da})
##### Заметки об именах дискретных датчиков в OpenIPMI-2.0.16, 2.0.17, 2.0.18 и 2.0.19

Имена дискретных датчиков в OpenIPMI-2.0.16, 2.0.17 и 2.0.18 зачастую имеют дополнительный символ «`0`» (или какую-то другую цифру или символ), добавленный в конце имени. Например, тогда как `ipmitool` и OpenIPMI-2.0.19 отображают имена датчиков как «`PhysicalSecurity`» или «`CATERR`», в OpenIPMI-2.0.16, 2.0.17 и 2.0.18 эти имена — «`PhysicalSecurity0`» или «`CATERR0`» соответственно.

При настройке элемента данных IPMI для Zabbix сервера, использующего OpenIPMI-2.0.16, 2.0.17 и 2.0.18, добавьте к их именам «0» в поле *IPMI датчик* для элементов данных IPMI агента. Когда ваш Zabbix сервер будет обновлён в новом Linux дистрибутиве, использующем OpenIPMI-2.0.19 (или более позднюю), элементы данных с такими IPMI дискретными датчиками перейдут в состояние «НЕ ПОДДЕРЖИВАЕТСЯ». Вам потребуется изменить их имена *IPMI датчик* (удалить «0» в конце) и подождать некоторое время, пока они станут «Активированными» снова.

[comment]: # ({/761eb9da-761eb9da})

[comment]: # ({01ffa3dc-2adee003})
##### Заметки об одновременной доступности пороговых и дискретных датчиков

Некоторые IPMI агенты предоставляют одновременно пороговые и дискретные датчики под одним именем. Предпочтение всегда отдаётся пороговому датчику.

[comment]: # ({/01ffa3dc-2adee003})

[comment]: # ({69164d8f-69164d8f})
##### Примечания о завершении соединений

Если IPMI проверки не выполняются (по любой из причин: все элементы данных IPMI деактивированы / не поддерживаются на узле сети, сам узел сети деактивирован/удалён, узел сети находится в режиме обслуживания и так далее), то соединение будет разорвано со стороны Zabbix сервера и прокси через 3 — 4 часа, в зависимости от времени запуска Zabbix сервера/прокси.

[comment]: # ({/69164d8f-69164d8f})
