
Делюсь полезным шаблоном для мониторинга программных RAID контроллеров Intel RST (Rapid Storage Technology), Intel RSTe (Intel Rapid Enterprise), Intel VROC (Virtual RAID on CPU).
Скачать шаблон для Zabbix 5.0: zabbix_intel_rst_vroc.zip
Мониторим с помощью утилит CLI. В пакете есть следующие утилиты:
В зависимости от установленного в системе драйвера для RAID контроллера используется подходящая утилита CLI:
- 13_16_rstcli64.exe — для драйвера версии ниже 1.7.0.
- 4.6.0_rstcli64.exe — для драйвера версии ниже 5.0.0.
- 5.0.0_rstcli64.exe — для драйвера версии ниже 5.0.3.
- 5.0.3_rstcli64.exe — для драйвера версии ниже 5.3.0.
- 5.3.0_rstcli64.exe — для драйвера версии ниже 5.6.0.
- 5.6.0_rstcli64.exe — для драйвера версии ниже 6.1.0.
- IntelVROCCli.exe — для драйвера версии ниже 6.2.0.
- rstcli64.exe — для остальных случаев.
Не уверен в точности соответствия версий и утилит, возможно, в дальнейшем потребуется корректировка в BAT файле и препроцессинге элемента данных "RST cli path".
В папке old есть более старая утилита IntelVROCCli.exe, вдруг, кому-то пригодится.
Шаблон получает все данные от CLI, затем, используя javascript и регулярные выражения, с помощью низкоуровневого обнаружения LLD находит:
- Контроллеры
- Массивы
- Логические диски
- Физические диски
Можно было бы не заморачиваться с регулярными выражениями, если бы работало опция --xml, которая имеется в описании CLI IntelVROCCli.exe. Однако, вывод в XML не работает, о чём я нашёл подтверждение в документации к CLI.
Благодарности
Мой шаблон основан вот на этом шаблоне (автор Николай Куликов):
https://github.com/mykolq/zabbix_intel_rst_template
Изначально предполагалось создание локального пользователя, который в автоматическом режиме прописывал в макрос путь к CLI. Мне это не понравилось, я сделал автоматическое определение CLI по версии драйвера в файле BAT, который при первом запуске определяет драйвер и записывает путь CLI в текстовый файл. Если драйвер изменится, то нужно на сервере вручную удалить файл RST.txt. Можно избавиться от этого текстового файла и модифицировать скрипт, но тогда каждый раз при запросе будет определяться версия драйвера, а эта процедура отрабатывает секунд пять, не очень быстро. Ещё можно сделать полную автоматизацию, как у Николая, написав скрипт для обновления RST.txt в планировщике. Но, поскольку, я не собираюсь обновлять версию драйвера RST без особых причин, то не буду делать автоматизацию. Для защиты от дурака сделал триггер, который сравнивает текущий путь CLI и определённый по версии драйвера в системе. Вдруг, кто-то полезет на сервер и начнёт всё бездумно обновлять.
Добавил к исходному шаблону функционал определения контроллеров и массивов. Ну и добавил все элементы данных, которые возвращает мой RST контроллер.
А за набор CLI утилит спасибо Николаю. Я там только заменил IntelVROCCli.exe на более новый.
Установка шаблона в Linux
Отдельный мониторинг Intel RST в Linux не требуется. Для мониторинга Intel RST, Intel RSTe, Intel VROC в Linux необходимо использовать утилиту mdadm:
Zabbix — мониторинг программных RAID массивов в Linux
Установка шаблона в Windows
Качаем архив zabbix_intel_rst_vroc.zip
Импортируем шаблон zbx5_intel_rst_vroc.xml.
В макросах шаблона можно отредактировать параметры:
- {$ARRAY_HISTORY_PERIOD} — 30d. Срок хранения истории массивов.
- {$ARRAY_THROTTLING_HB_PERIOD} — 6h. Срок тротлинга массивов.
- {$CTRL_HISTORY_PERIOD} — 30d. Срок хранения истории контроллеров.
- {$CTRL_THROTTLING_HB_PERIOD} — 6h. Срок тротлинга контроллеров.
- {$INTERNAL_ITEMS_HISTORY_PERIOD} — 30d. Срок хранения истории внутренних элементов.
- {$INTERNAL_ITEMS_NODATA} — 1h. Для триггеров. Интервал, в течение которого допускается отсутствие данных от RST.
- {$INTERNAL_ITEMS_REQUEST_PERIOD} — 5m. Периодичность опроса RST. Основной интервал.
- {$LD_HIGH_SEVERITY_STATES} — Degraded|Failed. Для триггеров. Критичные статусы локальных дисков.
- {$LD_HISTORY_PERIOD} — 30d. Срок хранения истории локальных дисков.
- {$LD_INFORMATION_SEVERITY_STATES} — Initializing. Для триггеров. Информационные статусы локальных дисков.
- {$LD_RECOVERY_STATES} — Normal. Для триггеров. Нормальные статусы локальных дисков.
- {$LD_THROTTLING_HB_PERIOD} — 3h. Срок тротлинга локальных дисков.
- {$LD_WARNING_SEVERITY_STATES} — Rebuilding|Verify and Fix. Для триггеров. Предупреждающие статусы локальных дисков.
- {$PD_HIGH_SEVERITY_STATES} — Missing|Failed|Degraded|Smart event triggered. Для триггеров. Критичные статусы физических дисков.
- {$PD_HISTORY_PERIOD} — 30d. Срок хранения истории физических дисков.
- {$PD_INFORMATION_SEVERITY_STATES} — Online|Initialize. Для триггеров. Информационные статусы физических дисков.
- {$PD_RECOVERY_STATES} — Normal. Для триггеров. Нормальные статусы физических дисков.
- {$PD_THROTTLING_HB_PERIOD} — 3h. Срок тротлинга физических дисков.
- {$PD_WARNING_SEVERITY_STATES} — Verify|Rebuilding|Offline|Incompatible. Для триггеров. Предупреждающие статусы физических дисков.
- {$RSTCLI_REQUEST_PERIOD} — 6h. Периодичность опроса версий драйвера RST.
Копируем rst.conf в папку с пользовательскими переменными, у меня это C:\zabbix\zabbix_agent.conf.d\rst.conf. В конфигурации агента этот файл должен быть подключен.
Копируем папку со скриптами в C:\zabbix\scripts. В ней у нас:
- rst — папка с утилитами RST
- rst.bat — скрипт для получения данных RST
- rstcurrent.bat — скрипт для получения текущей утилиты RST CLI
Перезапускаем агент:
net stop "Zabbix Agent" && net start "Zabbix Agent"
Версии
v.1 от 03.07.2022
Начальная версия
v.2 от 05.12.2022
Упрощено регулярное выражение для LLD контроллеров. В некоторых случаях обработка регулярки уходила в бесконечный цикл, непонятно почему. И нагрузку на сервер снизили.