RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
FreeBSD: Мониторинг состояния оборудования с поддержкой IPMI в Zabbix [2010]
Одной из полезнейших возможностей системы мониторинга Zabbix является наблюдение за состоянием оборудования с поддержкой IPMI (Intelligent Platform Management Interface) – интеллектуального интерфейса управления платформой, который предназначен для автономного мониторинга состояния компонентов серверных платформ, а также для управления встроенными в них аппаратными и микропрограммными функциями даже в тех случаях, когда система находится в выключенном состоянии.
Постановка задачи
Необходимо "научить” Zabbix следить за такими параметрами сервера с поддержкой IPMI, как: окружающая температура, температура центральных процессоров, скорость вращения вентиляторов систем охлаждения, напряжение на выходах блока питания, состояние батареи CMOS и т.д. (полный список параметров зависит от возможностей используемого BMC). Данная статья содержит рекомендации по получению списка сенсоров (датчиков), поддерживаемых Вашей платформой, включению IPMI мониторинга узлов сети, а также созданию элементов данных и триггеров, предназначенных для контроля текущего состояния оборудования и оповещения системных администраторов о предстоящем возникновении проблем.
Исходные данные
Имеется сервер HP ProLiant DL140 G3 c модулем удаленного управления HP Lights-Out 100i (LO100i) Remote Management standard, работающий под управлением операционной системы FreeBSD и, кроме всего прочего, являющийся сервером Zabbix. Для получения информации о поддерживаемых сенсорах и критических значениях измеряемых ими параметров будет использоваться утилита ipmitool, а для обеспечения поддержки IPMI сервером Zabbix – компоненты пакета OpenIPMI. Все программное обеспечение будет устанавливаться из портов, поэтому я рекомендую Вам обновить их (я использовал FreeBSD 8.1-STABLE и последние на начало августа 2010 года версии портов для нее).
Получение информации о доступных сенсорах IPMI
Перед выполнением действий, которые описаны в данной статье, следует убедиться, что используемая Вами платформа поддерживает функции IPMI. Для этого достаточно загрузить модуль ядра (драйвер) IPMI командой kldload ipmi, а затем посмотреть содержимое журнала системных сообщений командой dmesg | grep ipmi. Если используемая платформа поддерживает функции IPMI, будут отображены примерно такие сообщения:
ipmi0: <IPMI System Interface> port 0xca2-0xca3 on acpi0
ipmi0: KCS mode found at io 0xca2 on acpi
ipmi0: IPMI device rev. 1, firmware rev. 2.2, version 2.0
ipmi0: Number of channels 1
ipmi0: Attached watchdog
Утилиту ipmitool, являющуюся одним из удобнейших инструментов для работы с IPMI из консоли, необходимо установить из портов:
cd /usr/ports/sysutils/ipmitool
make install clean
Для получения информации о доступных сенсорах можно выполнить команду ipmitool sensor, которая отобразит примерно такую таблицу:
....
CPU Fan 1 | 7735.747 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 2 | 8269.247 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 3 | 7494.005 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 4 | 8269.247 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 5 | 8269.247 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 6 | 7993.605 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 7 | 7993.605 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 8 | 7735.747 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 9 | 7735.747 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU Fan 10 | 7735.747 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
System Fan 1 | 7494.005 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
System Fan 2 | 7993.605 | RPM | ok | na | na | na | 3996.803 | 3475.480 | na
CPU0 Vcore | 1.147 | Volts | ok | na | 0.402 | 0.500 | 1.597 | 1.695 | na
CPU1 Vcore | 1.225 | Volts | ok | na | 0.402 | 0.500 | 1.597 | 1.695 | na
Standby 5V | 5.027 | Volts | ok | na | 4.263 | 4.528 | 5.527 | 5.792 | na
System 5V | 4.998 | Volts | ok | na | 4.263 | 4.528 | 5.527 | 5.792 | na
System 3.3V | 3.205 | Volts | ok | na | 2.822 | 2.999 | 3.675 | 3.851 | na
3V CMOS Sense | 2.891 | Volts | ok | na | 2.617 | 2.781 | na | na | na
...
AMB Temp | 20.000 | degrees C | ok | na | 10.000 | na | 30.000 | 45.000 | na
...
CPU0 Dmn 0 Temp | 33.000 | degrees C | ok | na | na | na | na | 85.000 | 95.000
CPU1 Dmn 0 Temp | 34.000 | degrees C | ok | na | na | na | na | 85.000 | 95.000
...
Первый столбец этой таблицы содержит название сенсора (Sensor ID), второй – текущее значение параметра (Sensor Reading), третий – единицу измерения (Sensor Type), четвертый – статус (Status), пятый – низшее значение, при котором соответствующий узел может выйти из сторя (Lower Non-Recoverable), шестой – низшее критическое значение (Lower Critical), седьмой – низшее некритическое значение (Lower Non-Critical), восьмой – высшее некритическое значение (Upper Non-Critical), девятый – высшее критическое значение (Upper Critical), десятый – высшее значение, при котором соответствующий узел может выйти из сторя (Upper Non-Recoverable). Если Вас не устраивает табличное отображение информации, выполните команду ipmitool -v sensor, а затем "отфильтруйте” предоставленные ей данные. Например, команда ipmitool -v sensor | grep -A 13 "AMB Temp" отобразить список параметров сенсора AMB Temp в таком виде:
Sensor ID : AMB Temp (0x48)
Entity ID : 0.0
Sensor Type (Analog) : Temperature
Sensor Reading : 19 (+/- 0) degrees C
Status : ok
Lower Non-Recoverable : na
Lower Critical : 10.000
Lower Non-Critical : na
Upper Non-Critical : 30.000
Upper Critical : 45.000
Upper Non-Recoverable : na
Assertion Events :
Assertions Enabled : lcr- unc+ ucr+
Deassertions Enabled : lcr- unc+ ucr+
Настройка удаленного доступа к функциям IPMI
В отличие от утилиты ipmitool сервер Zabbix не поддерживает работу через драйвер IPMI и может подключаться к наблюдаемому оборудованию только по сети с использованием IP-адреса или доменного имени, имени пользователя и пароля. Способы установки значений этих параметров зависят как от аппаратной реализации, так и от программной конфигурации используемой платформы. Дорогие модули удаленного управления имеют в своем составе отдельные сетевые интерфейсы и развитые средства конфигурирования, а для настройки более бюджетных моделей без собственных сетевых интерфейсов и средств конфигурирования придется воспользоваться сторонними инструментами. Если Вы (как и я) являетесь обладателем достаточно серьезного модуля удаленного управления, изучите поставляемую с ним документацию, а затем задайте соответствующие параметры любым удобным способом. Например, при использовании серверов HP ProLiant можно установить IP-адрес в настройках BIOS, а затем подключиться к слушающему этот адрес BMC HTTP Server’у и создать аккаунт пользователя прямо из браузера. Для настройки бюджетных модулей удаленного управления подойдет утилита ipmitool. С ее помощью придется выбрать сетевой интерфейс, к которому будет привязан виртуальный интерфейс модуля удаленного управления, задать IP-адрес и маску подсети (при необходимости доступа из-за пределов локальной сети еще и шлюз по умолчанию), а также создать аккаунт пользователя с нужными именем, паролем и привилегиями. Для того, чтобы выбрать первый сетевой интерфейс материнской платы и задать для него IP-адрес 192.168.0.253, маску подсети 255.255.255.0 и шлюз по умолчанию 192.168.0.1, необходимо выполнить команды:
ipmitool lan set 1 ipsrc static
ipmitool lan set 1 ipaddr 192.168.0.253
ipmitool lan set 1 netmask 255.255.255.0
ipmitool lan set 1 defgw ipaddr 192.168.0.1
Для просмотра сделанных изменений можно выполнить команду ipmitool lan print 1, которая отобразит примерно такое сообщение:
Set in Progress : Set Complete
Auth Type Support : NONE MD5 PASSWORD
Auth Type Enable : Callback : NONE MD5 PASSWORD
: User : NONE MD5 PASSWORD
: Operator : NONE MD5 PASSWORD
: Admin : NONE MD5 PASSWORD
: OEM : NONE MD5 PASSWORD
IP Address Source : Static Address
IP Address : 192.168.0.253
Subnet Mask : 255.255.255.0
MAC Address : 00:1c:c4:fa:4f:8f
SNMP Community String : public
IP Header : TTL=0x40 Flags=0x40 Precedence=0x00 TOS=0x10
Default Gateway IP : 192.168.0.1
802.1q VLAN ID : Disabled
802.1q VLAN Priority : 0
RMCP+ Cipher Suites : 0,1,2,3
Cipher Suite Priv Max : OOOOXXXXXXXXXXX
: X=Cipher Suite Unused
: c=CALLBACK
: u=USER
: o=OPERATOR
: a=ADMIN
: O=OEM
При работе с утилитой ipmitool для указания пользователей применяются числовые идентификаторы (ID). Уровни привилегий (Priv) также задаются цифрами, при этом 1 соответствует CALLBACK, 2 – USER, 3 – OPERATOR, 4 – ADMINISTRATOR, 5 – OEM, 15 – NO ACCESS. С учетом этих особенностей для создания пользователя с идентификатором 2, именем zabbix, паролем password4zabbix и уровнем привилегий USER, а также для разрешения этому пользователю доступа к функциям IPMI канала 1 с привилегиями USER следует выполнить команды:
Для просмотра прав доступа к каналу 1, предоставленных пользователю с идентификатором 2, подойдет команда ipmitool user getaccess 1 2, которая отобразит примерно такое сообщение:
Maximum User IDs : 16
Enabled User IDs : 3
User ID : 2
User Name : zabbix
Fixed Name : No
Access Available : callback
Link Authentication : disabled
IPMI Messaging : enabled
Privilege Level : USER
На этом настройка заканчивается. Для тестирования работоспособности свежесозданной конфигурации можно выполнить любую из рассмотренных в предыдущем разделе команд (командам из текущего раздела требуется более высокий уровень привилегий), указав IP-адрес или доменное имя, имя пользователя, пароль и уровень привилегий с помощью ключей -H, -U, -P и -L. Например, команда получения списка доступных сенсоров с учетом заданных параметров доступа по сети будет иметь вид ipmitool -H 192.168.0.253 -U zabbix -P password4zabbix -L USER sensor и т.д. В связи с разнообразием модулей удаленного управления я настоятельно рекомендую Вам начинать настройку только после изучения документации по используемой платформе, а также руководства по работе с утилитой ipmitool.
Подготовка сервера Zabbix для IPMI мониторинга
Для того, чтобы сервер Zabbix мог осуществлять IPMI мониторинг, необходимо пересобрать его из портов с опцией WITH_IPMI:
cd /usr/ports/net-mgmt/zabbix-server
make -DWITH_IMPI deinstall install clean
После завершения пересборки, в процессе которой установятся все необходимые зависимости, включая пакет OpenIPMI, следует добавить в файл конфигурации сервера Zabbix /usr/local/etc/zabbix/zabbix_server.conf строку, задающую количество поллеров IPMI (для нескольких десятков элементов данных, связанных с параметрами нескольких серверов, хватит одного поллера):
StartIPMIPollers=1
Теперь можно перезапустить сервер Zabbix командой /usr/local/etc/rc.d/zabbix_server restart и посмотреть содержимое его лога командой grep IPMI /tmp/zabbix_server.log. Если Вы не допустили ни каких ошибок, будут отображены примерно такие сообщения:
... IPMI monitoring: YES
... server #.. started [IPMI Poller]
Включение IPMI мониторинга узлов сети
Для включения IPMI мониторинга любого из узлов сети нужно зайти в раздел Настройка » Узлы сети и перейти по соответствующей ссылке в столбце Имя. На открывшейся странице КОНФИГУРАЦИЯ УЗЛОВ СЕТИ следует установить "галочку” Использовать IPMI, а затем указать заданные ранее IPMI IP адрес, Имя пользователя IPMI и Пароль IPMI. После внесения изменений страница КОНФИГУРАЦИЯ УЗЛОВ СЕТИ будет выглядеть примерно так:
Создание элементов данных для IPMI мониторинга
При создании элементов данных, связанных с сенсорами IPMI, следует помнить три момента: во-первых, их Тип должен иметь значение IPMI агент, во-вторых, их параметр IPMI Sensor должен содержать Sensor ID, возвращаемый утилитой ipmitool, в третьих, их параметр Ключ может содержать любой текст без пробелов (во избежание путаницы такой же текст, как IPMI Sensor, только без пробелов). Например, для создания элемента данных Ambient temperature, связанного с сенсором AMB Temp, нужно зайти в раздел Настройка » Узлы сети и перейти по ссылке Элементы данных в столбце Элементы данных. На открывшейся странице ЭЛЕМЕНТЫ ДАННЫХ необходимо нажать кнопку Создать элемент данных, а затем на открывшейся странице НАСТРОЙКА ЭЛЕМЕНТОВ ДАННЫХ следует ввести Описание (произвольное название элемента данных), выбрать в списке Тип значение IPMI агент, ввести в поле IPMI Sensor значение Sensor ID, ввести аналогичный текст (естественно, удалив пробел) в поле Ключ, задать Единицу измерения и Интервал обновления (на мой взгляд, не следует "мерить” значения инертных параметров IPMI чаще, чем раз в 3 минуты):
Значения элементов данных, созданных для IPMI мониторинга, можно посмотреть в разделе Мониторинг » Последние данные.
Создание триггеров для IPMI мониторинга
Создание триггеров, предназначенных для фиксации ненормального состояния оборудования не имеет каких-либо особенностей, при этом в качестве порогов срабатывания можно использовать значения Lower Non-Critical и/или Upper Non-Critical, возвращаемые утилитой ipmitool. Например, для создания триггера High ambient temperature on {HOSTNAME}, срабатывающего в случае превышения верхней границы диапазона нормальной окружающей температуры, необходимо зайти в раздел Настройка » Узлы сети и перейти по ссылке Триггеры в столбце Триггеры. На открывшейся странице ТРИГГЕРЫ следует нажать кнопку Создать триггер, на открывшейся странице НАСТРОЙКА ТРИГГЕРОВ нужно ввести выбранное Имя, задать Выражение{server.company.com:AMBTemp.last(0)}>30, а также выбрать в списке Важность значение Предупреждение:
Выражения триггеров, фиксирующих слишком маленькую скорость вращения вентиляторов систем охлаждения, отличаются от рассмотренного только знаком. Например, для триггера Slow CPU Fan 1 speed on {HOSTNAME} подойдет выражение {server.company.com:CPUFan1.last(0)}<3996.803. Выражения триггеров, предназначенных для выявления слишком низкого и слишком высокого напряжения источников питания, имеют более сложную структуру и представляют из себя логические суммы пар простых выражений. Например, для триггера Wrong CPU0 VCore voltage on {HOSTNAME} подойдет выражение {server.company.com:CPU0Vcore.last(0)}<0.500 | {server.company.com:CPU0Vcore.last(0)}>1.597.
Шаблон для IPMI мониторинга серверов HP ProLiant DL140 G3
В связи с тем, что в моем "хозяйстве” есть несколько серверов HP ProLiant DL140 G3, я решил вынести связанные с ними элементы данных и триггеры для IPMI мониторинга в отдельный шаблон Template_IPMI_HP_DL140G3, который содержит 3 группы элементов данных, 19 элементов данных и 19 триггеров. Для того, чтобы импортировать этот шаблон в систему мониторинга Zabbix, следует зайти в раздел Настройка » Экспорт/Импорт, выбрать в выпадающем списке в правом верхнем углу окна значение Импорт, нажать кнопку Обзор, выбрать файл template-ipmi-hp-dl140g3.xml и нажать кнопку Импорт. Теперь вместо ручного создания элементов данных и триггеров для IPMI мониторинга серверов HP ProLiant DL140 G3 достаточно добавить к нужным узлам сети свежеустановленный шаблон Template_IPMI_HP_DL140G3.
Заключение
Я надеюсь, что данная статья, поможет Вам достаточно быстро и без лишних затруднений настроить систему мониторинга Zabbix для наблюдения за состоянием оборудования с поддержкой IPMI. Позже я обязательно продолжу знакомить Вас с другими не менее полезными возможностями системы мониторинга Zabbix, поэтому не забудьте подписаться на новости.