Сегодня серьёзная тема по мониторингу LSI контроллеров на гипервизорах ESXi 7. Очень много стало появляться аппаратных серверов, которые не могут и не умеют сообщать о том, что вышел из строя диск. Это неприемлемо, использовать такие сервера практически невозможно, эксплуатация просто не может гарантировать обеспечение отказоустойчивой работы RAID массивов. Мы не можем отследить момент выхода из строя диска, а постоянно скриптами мониторить все сервера нереально.
Есть много обходных способов. К примеру, на серверах ESXi можно установить пакет LWA (Avago Lightweight Monitor).
Тогда мы сможем получать уведомления на почту, когда выйдет из строя диск. Но это не всегда удобно, письмо можно пропустить.
Ранее я уже делал шаблоны для мониторинга LSI в Linux и Windows:
- Zabbix шаблон для мониторинга RAID контроллеров LSI в Linux
- Zabbix шаблон для мониторинга RAID контроллеров LSI в Windows
По сути это один и тот же шаблон, фишка в разных пользовательских скриптах получения информации о данных RAID контроллера LSI. На основе этого шаблона энтузиасты написали мониторинг хостов ESXI. Но там вся работа ведётся через вспомогательный сервер и по SSH.
https://github.com/ghost9777/zabbix_megaraid_esxi
Пришло время расширить возможности шаблона и сделать нормальный мониторинг LSI в ESXi 7 через Zabbix Agent. Как вы можете видеть по скриншоту ниже, у меня всё получилось. Вчера доделал скрипты и сейчас пишу данную инструкцию.
Мой тестовый стенд:
- Сервер Supermicro, однако, модель сервера нам не важна. Одной из целью было как раз отвязаться от бренда сервера.
- ESXi 7.0.3. Подозреваю, что заработает и в других версиях.
- Zabbix 5.0.
- RAID контроллер AVAGO MegaRAID SAS 9361-8i
Самая неудобная штука во всей этой инструкции, это необходимость генерации собственного пакета VIB для установки Zabbix Agent на ESXi сервер. Но есть и плюс, который заключается в том, что не нужно генерировать VIB пакет для каждого сервера, достаточно сделать один для инфраструктуры, поскольку требуется-таки указать в конфигурации IP адрес сервера Zabbix.
Ещё плюс в том, что мониторинг будет осуществляться по стандартным портам Zabbix, SSH нам не потребуется.
План работ:
- Порты Firewall
- Storcli
- Zabbix Agent для ESXi
- Шаблон Zabbix
- Модификация Zabbix Agent для мониторинга LSI
Приступим.
Порты Firewall
Для работы Zabbix Agent нужно открыть соответствующие порты, добавив новые правила.
- Входящее на TCP 10050
- Исходящее на TCP 10051
С портами и Firewall я недавно разобрался, написал свой отдельный VIB пакет:
ESXi 7.0 Firewall — добавляем правила для Zabbix Agent
Пакет я назвал fw-zabbix-agent. Скачать его можно в Сборке для VMware. Пакет добавляет два правила firewall, которые нужны для работы LSA. Устанавливаем и включаем правила.
Storcli
Для получения данных о дисках и контроллере LSI нужно установить утилиту storcli.
StorCLI — Storage Command Line Tool. Утилита командной строки для управления RAID контроллерами LSI, Avago, Broadcom.
Утилиту для управления RAID контроллерами LSI, Avago, Broadcom можно скачать с сайта https://www.broadcom.com/support/download-search. Группу продуктов указываем как "Storage Adapters, Controllers, and ICs". Ставим галку "Include Legacy Products". Семейство продуктов "All Storage Adapters, Controllers, and ICs". OEM. Имя продукта указываем как "9361-8i", нам подсвечивают MegaRAID SAS 9361-8i, выбираем его.
В итоге я получаю VIB пакет BCM_bootbank_vmware-storcli64_007.2310.0000.0000-01.vib. Устанавливаем:
esxcli software vib install -v /tmp/BCM_bootbank_vmware-storcli64_007.2310.0000.0000-01.vib --no-sig-check
VIBs Installed: BCM_bootbank_vmware-storcli64_007.2310.0000.0000-01 — пакет установлен. Проверим:
/opt/lsi/storcli64/storcli64 show
Утилита работает, данные о RAID контроллере получены.
Zabbix Agent для ESXi
Теперь нам надо научиться собирать VIB пакет с агентом Zabbix. Вынес всё в отдельную статью.
Собираем VIB пакет Zabbix Agent
Копировать всё сюда не буду. Вы делаете свой конфигурационный файл, скорее всего там просто будет IP адрес вашего сервера Zabbix. В итоге у нас получилось вот такое дерево:
Собираем его в VIB (только чтобы убедиться, что всё заработает) с помощью ESXi Community Packaging Tools 2.4.
Устанавливаем пакет (--nosig-check нужен, поскольку мы устанавливали уровень Acceptance Level: accepted):
esxcli software vib install -d /tmp/IL-zabbix-agent-1.0-0-offline_bundle.zip --no-sig-check
Перезагружаем хост.
Проверим установку пакетов:
esxcli software vib list | grep zabbix
/etc/init.d/zabbix_agentd status
Все нужные пакеты установлены. Агент запущен.
esxcli network ip connection list | grep :10050
На основе шаблона для Linux сделал небольшой шаблон для ESXi 7, для мониторинга стандартных элементов данных, которые заработали "из коробки".
Работает. Дальше только модифицировать пакет для мониторинга необходимых данных.
Шаблон Zabbix
v9
Исправлены скрипты для sh.
v8
Добавлены элементы данных для контроллеров с BBU (Battery Backup Unit) вместо CV (Cache Vault).
Добавлен датчик температуры BBU и график к нему.
Добавлены графики заряда BBU.
Добавлены макросы для BBU.
Исправлен парсинг данных BBU и CV.
Добавлены элементы данных для контроллеров с CV (Cache Vault).
Внесены исправления в скрипты для Linux и ESXi.
Включено игнорирование данных если нет BBU или CV, ошибка подавлена.
v7
Добавлена версия для ESXi 7.
Шаблон для Zabbix 5.0: zabbix_lsi.zip. Вам потребуется как минимум седьмая версия, потому что именно в ней я добавил скрипты на sh, в ESXi нет bash.
Шаблон использует низкоуровневое обнаружение LLD и находит:
- controllers — контроллеры
- logical disc — логические диски
- physical discs — физические диски в Enclosure и Backplane
- physical discs ne — физические диски без Enclosure и Backplane
- cv — кэш с батарейкой
- bbu — батарейки (не проверено)
Импортируем шаблон zbx_lsi_json_lld.xml.
В макросах шаблона можно отредактировать периодичность опроса данных:
- {$ADAP_DISCOVERY_PERIOD} — 1h. Периодичность автообнаружения контроллеров.
- {$ADAP_HISTORY_PERIOD} — 30d. Срок хранения истории контроллеров.
- {$ADAP_REQUEST_PERIOD} — 10m. Периодичность опроса контроллеров, кэша, батареек.
- {$ADAP_THROTTLING_HB_PERIOD} — 3h. Срок тротлинга контроллера.
- {$ADAP_TREND_PERIOD} — 180d. Срок хранения трендов контроллера.
- {$BATTERY_HISTORY_PERIOD} — 30d. Срок хранения истории батареек и кэша.
- {$BATTERY_REQUEST_PERIOD} — 10m. Периодичность опроса батареек и кэша.
- {$BATTERY_TREND_PERIOD} — 180d. Срок хранения трендов батареек и кэша.
- {$INTERNAL_ITEMS_HISTORY_PERIOD} — 30d. Срок хранения истории JSON логических и физических дисков.
- {$LD_DISCOVERY_PERIOD} — 10m. Периодичность автообнаружения и опроса логических дисков.
- {$LD_HISTORY_PERIOD} — 30d. Срок хранения истории логических дисков.
- {$LD_REQUEST_PERIOD} — 10m. Периодичность опроса JSON логических дисков. Для просмотра всех параметров, которых нет в элементах данных.
- {$LD_THROTTLING_HB_PERIOD} — 3h. Срок тротлинга логических дисков.
- {$PD_DISCOVERY_PERIOD} — 10m. Периодичность автообнаружения и опроса физических дисков.
- {$PD_HISTORY_PERIOD} — 30d. Срок хранения истории физических дисков.
- {$PD_REQUEST_PERIOD} — 10m. Периодичность опроса JSON физических дисков. Для просмотра всех параметров, которых нет в элементах данных.
- {$PD_THROTTLING_HB_PERIOD} — 3h. Срок тротлинга физических дисков.
- {$PD_TREND_PERIOD} — 180d. Срок хранения трендов физических дисков.
А также настроить граничные значения температур в градусах Цельсия:
- {$ADAP_CACHE_TEMP_CRIT} — 55. Критическая температура кэша.
- {$ADAP_CACHE_TEMP_AVERAGE} — 45. Высокая температура кэша.
- {$ADAP_CACHE_TEMP_WARNING} — 40. Повышенная температура кэша.
- {$ADAP_ROC_TEMP_CRIT} — 90. Критическая температура чипа.
- {$ADAP_ROC_TEMP_AVERAGE} — 80. Высокая температура чипа.
- {$ADAP_ROC_TEMP_WARNING} — 70. Повышенная температура чипа.
- {$PD_TEMP_CRIT} — 55. Критическая температура физического диска.
- {$PD_TEMP_AVERAGE} — 50. Высокая температура физического диска.
- {$PD_TEMP_WARNING} — 45. Повышенная температура физического диска.
Модификация Zabbix Agent VIB для мониторинга LSI
Модифицируем наш VIB пакет. Копируем папку со скриптами в /etc/zabbix/scripts/. Есть два варианта скриптов, на bash и на sh. Нам требуется версия sh. В ней у нас:
- /etc/zabbix/scripts/lsistorcli_bbuinfo.sh
- /etc/zabbix/scripts/lsistorcli_ctlinfo.sh
- /etc/zabbix/scripts/lsistorcli_cvsinfo.sh
- /etc/zabbix/scripts/lsistorcli_ldinfo.sh
- /etc/zabbix/scripts/lsistorcli_pdinfo.sh
- /etc/zabbix/scripts/lsistorcli_pdinfo_all.sh
- /etc/zabbix/scripts/lsistorcli_pdinfo_ne.sh
Дайте скриптам права на исполнение перед сборкой.
Копируем файл с пользовательскими переменными /conf/zabbix_agentd/lsi_raid_esxi.conf.
Подключаем в конфигурационном файле, добавляя параметр:
Include=/etc/zabbix/conf/zabbix_agentd/lsi_raid_esxi.conf
Получаем дерево.
Собираем новый VIB пакет и устанавливаем на ESXi 7. Ожидаем пока автообнаружение сработает.
Да блин, оказывается, контроллер греется, надо вентиляторы подшаманить.
ESXi hv33: LSI controller 0 ROC temp is 73 °C
Буду раскатывать пакеты на остальные хосты. Жаль что требуется перезагрузка, уж так устроена система раздачи расширенных прав доступа в ESXi.