San3ko
Статья-заметка по настройке мониторинга RAID по SNMP на win машинах через Zabbix.
Статья подойдет для мониторинга большинства устройств, которые управляются через Intel RAID Web Console 2. Действия впринципе одинаковые для любой Windows OS, буду по возможности дополнять конкретными примерами. Все ссылки в самом низу страницы, но я советую прочитать статью перед началом действий.
Windows Server 2003 R2 :
Начать нужно с установки SNMP в систему. Идем в Установку компонентов Windows. Там нас интересует раздел «Средства управления и наблюдения», а именно в его составе интересует «Протокол SNMP».
Как закончили с установкой , настраиваем службу SNMP. Настраивается через свойства сервиса. Там нас интересуют вкладки «Ловушки» и «Безопасность». Задаем имена сообществ, добавляем доверенные хосты и можно уже проверять работу.
# snmpwalk -v 2c -c community 192.168.x.x .1.3.6.1.2.1.1.3
Система выдает аптайм по одному из стандартных OID (RFC1213), а это значит, что система наполовину готова.
Далее вам нужно убедиться что сама Web Console установлена с snmp функционалом. Если нет — исправляем.
После установки в самой консоли ничего настраивать не надо (там просто негде). Вместе с установочным файлом есть MIB-ы, которые нужно добавить на сервер заббикса, например в /usr/share/mibs/netsnmp (debian). Вообщем лучше иметь их под рукой.
Windows Server 2012
Аналогично предыдущему варианту. Сначала в систему должен быть установлен SNMP на уровне компонентов. Web console также должен быть установлен с указанием SNMP (Custom вариант установки, в серверной части)
Идем в добавление ролей и компонентов, там находим SNMP и устанавливаем. WMI поставщик для данной задачи не обязателен.
Настройка Zabbix
Для построения шаблона использовался MIB файл, который был найден в папке с софтом для управления рейдом. В данном варианте не используются агенты zabbix, только SNMP. В случае ошибок можно использовать snmptools для отладки со стороны заббикса.
Так как я хотел получить гибкую систему, а все построено через LLD (Low Level Discovery). Для меня это был первый опыт построения шаблонов с обнаружением, так что не забывайте открыть документацию заббикса и сверяться с ней. Как работает LLD хорошо описано на русском языке в документации, с которой советую ознакомиться (ССЫЛКА)
UPD : Перед импортированием шаблона необходимо в zabbix добавить преобразование велечин, которое я использую для отображения данных. (Данные брались из описания в mib файле). Делается это в Administration -> General -> Value mapping.
UPD2: в zabbix 3.0 теперь можно экспортировать и value mapping, так что ниже теперь добавлена еще одна ссылка. На архив с шаблоном и преобразованием величин из zabbix 3.0
1.LSI MegaRAID SNMP Access Policy
2. LSI MegaRAID SNMP Disk state
3. LSI MegaRAID SNMP Disk types
4. LSI MegaRAID SNMP RAID State
5. LSI MegaRAID SNMP RAID Type
Импортируем шаблон, подключаем сконфигурированный узел, в прототипах элементов советую также прописать community string или макросом задавать ее для каждого хоста.
В итоге получаем информацию о дисках и рейд-массивах и своевременно получаем информацию о неисправности.
Мониторинг Intel raid с помощью raidcfg и Zabbix
У меня есть группа серверов с настроенным intel raid и установленными поверх Windows Hyper-V Server. Возникло больше желание с помощью zabbix наблюдать за состоянием массивов и предупреждать в случае проблем. Готового решения нигде не нашел, поэтому пораскинул мозгами и придумал свое, чем и хочу поделиться с вами.
Цели статьи
- Настроить передачу в zabbix состояния рейд массивов, настроенных с помощью встроенной в материнскую плату технологии intel raid.
- При настройке совершать минимум действий на целевых серверах, а максимум на zabbix сервере.
- Настроить триггеры и уведомления на случай, если состояние рейда отличается от рабочего Normal.
Введение
На серверах уже настроен мониторинг состояния SMART дисков. При использовании встроенного intel raid, состояние дисков с целевой системы нормально наблюдается. В принципе, мне этого хватало, но подумал, почему бы и состояние массивов не замониторить, ведь массив может развалиться и при нормальных показателях смарта дисков.
В первую очередь погуглил и не нашел практически ничего, что помогло бы настроить мониторинг интел рейдов в zabbix. На целевых системах установлена интеловская утилита raidcfg, с помощью которой можно посмотреть на состояние массивов и дисков. Например, с ключом /st получается вот такой вывод.
Красиво и наглядно, но для автоматизации не очень подходит. Лучше подойдет ключ /stv.
С такими данными уже можно работать. В целом, ничего сложного, нужно распарсить вывод любым удобным способом и передать на сервер мониторинга информацию о статуте рейд массива. Как можно с помощью батников парсить различные текстовые файлы я показывал на нескольких примерах в отдельной статье — Мониторинг значений из текстового файла в Zabbix.
В этот раз мне не захотелось такие костыли городить на каждом сервере. Я в итоге решил поступить по-другому. На zabbix сервере сделать скрипт для внешних проверок. Этот скрипт будет на целевом сервере с помощью zabbix_get забирать вывод команды raidcfg.exe /stv, запущенной через system.run. Дальше вывод команды в исходном виде поступает на zabbix сервер. Его можно парсить каким-то образом, но я решил этого не делать. Вывод и так короткий, много места не занимает. Проверка на наличие тревожных слов будет уже в триггере с помощью regexp.
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
То же самое на Debian 10, если предпочитаете его:
Скрипт для внешних проверок raid массивов
В директорию на zabbix сервере /usr/lib/zabbix/externalscripts кладем скрипт intelraid.sh для внешних проверок.
Скрипт, как вы видите, очень простой. Для того, чтобы он работал, вам обязательно нужно на каждом агенте разрешить выполнение внешних команд. По-умолчанию они отключены. Добавляем в агенте параметр:
И перезапускаем агент. Это все, что надо делать на целевых серверах. Теперь можно проверить работу скрипта. Для этого выбираете любой сервер и передаем его ip адрес в качестве параметра скрипту.
Если получаете результат работы утилиты raidcfg, значит все в порядке. Можно переходить в web интерфейс сервера мониторинга.
Шаблон для мониторинга за intel raid
Шаблон очень простой — один элемент и один триггер, поэтому экспорт шаблона делать не буду, лучше создать вручную, чтобы точно работало на всех версиях Zabbix. Вот элемент данных.
А вот триггер к нему.
Если в строке будет найдено одно из слов Failed|Disabled|Degraded|Rebuild|Updating|Critical, то он сработает. Я на практике не проверял работу триггера, так как не хотелось рейд ломать. А потестил следующим образом. Добавил в проверочную строку название одного из массивов, к примеру, Storage, который встречается не на всех серверах. В итоге, триггер сработал только там, где было такое название. Так что в теории, проверка должна работать корректно.
Теперь можно добавлять шаблон к необходимым хостам и ждать поступление данных. В Latest Data должны увидеть следующее содержимое итема.
Вот и все. Теперь все intel raid массивы подключены к мониторингу.
Заключение
Так быстро и просто решается прикладная задача по мониторингу с помощью Zabbix. Сел, прикинул и сразу сделал. Вариантов решения обычно несколько, выбирай на свой вкус. Можно было на клиенте распарсить вывод и передавать в Zabbix сразу состояние массива в одно слово. А можно было просто True/False или 1/0.
Я последнее время стараюсь максимально выполнять на сервере и минимально на клиенте, благо в заббиксе появилась куча средств для этого — пост обработка данных, зависимые элементы и т.д. Буду рад замечаниям и предложениям по теме в комментариях. Если вам интересен Zabbix, читайте мои остальные статьи по нему.
Мониторинг raid массивов в Windows Core
За последние годы мы привыкли что можно и нужно все мониторить, множество инструментов начиная от простых логов, заканчивая Zabbix и все можно связать. Microsoft в свою очередь тоже дала нам отличный инструмент WinRM, с помощью которого мы можем отслеживать состояние операционных систем и не только. Но как всегда есть ложка дегтя, собственно об «обходе» этой ложки дегтя и пойдет речь.
Как выше было сказано, мы имеем все необходимые инструменты для мониторинга IT структуры, но так сложилось что мы не имеем «автоматизированный» инструмент для мониторинга состояния Intel raid массивов в Windows core. Обращаю Ваше внимание на то, что речь идет об обычном «желтом железе».
Все мы знаем что есть софт от Intel, rapid и matrix storage, но к сожалению на стандартном Windows core он не работает, также есть утилита raidcfg32, она работает в режиме командной строки, умеет обслуживать в ручном режиме и показывать статус, тоже в ручном режиме. Думаю Америку не для кого не открыл.
Постоянно в ручном режиме проверять состояние raid или ждать выхода из строя сервера виртуализации не самый лучший выбор.
Для реализации коварного плана по автоматизации мониторинга Intel raid мы используем
основные инструменты:
- Powershell
- EventLog
- Raidcfg32.exe
- Вспомогательные:
- WinRM
- Rsyslog
- LogAnalyzer
Первым делом нужно установить драйвер для raid контроллера:
cmd.exe pnputil.exe -i -a [путь до *.inf]
Копируем raidcfg32.exe в c:\raidcfg32\
Проверяем корректно ли установлен драйвер:
cmd.exe C:\raidcfg32\raidcfg32.exe /stv
Если получаем состояние raid и дисков, то все ок.
Создаем источник в журнале application:
*Дальше все выполняется в powershell
Выполняем запрос состояния raid, удаляем кавычки для упрощения парсинга, подключаем содержимое файла.
Ищем ключевые слова, если одно из слов ниже будет найдено, то в файле errorRAID.txt появится значение true, это будет говорить о наличии ошибки, если совпадений не найдено, то будет записано значение false.
Подключаем файл с записаными true и false, ищем в файле true, если true найдено то заменяем его на Error, заменяем false на Information.
Записывам результат в EntryType.txt
Подключаем содержимое файла EntryType.txt и удаляем в нем False, тем самым выводим корректный -EntryType что в свою очередь и является «Уровнем» сообщения.
Записываем в EventLog сообщение, где в случае если будут найдены ключевые слова, уровень сообщения будет Error, если не будут найдены, то Information.
Сохраняем код в *.ps1
Создаем в планировщике задание на запуск скрипта, я запускаю задание 1 раз в сутки и при каждой загрузке.
Если будет производится сбор логов другой Windows ОС в Eventlog, то на коллекторе логов необходимо создать источник «RAID», пример есть выше.
Мы транспортируем логи в rsyslog через Adison rsyslog для Windows.
На выходе получается вот такая картинка:
UPD.
По поводу использования store space, все сервера с windows core на борту используются в филиалах, в филиале установлен только 1 сервер и для получения «бесплатного» гипервизора и уменьшения стоимости лицензии используется именно core.