Мониторинг RAID-массивов настраиваем оповещения через StorCLI

Проблема

Вы собрали сервер с аппаратным RAID-контроллером LSI (Broadcom). Настроили массив из дисков, установили систему. Всё работает. Но вы знаете, что диски имеют свойство ломаться. И когда один диск выходит из строя, контроллер продолжает работать на остальных, но массив переходит в состояние degraded. Вы об этом не узнаете, пока не случится второй сбой или пока не зайдёте в утилиту управления и не увидите красный значок.

Многие администраторы полагаются на визуальную проверку, но в дата-центре с десятками серверов это нереально. Нужна система, которая сама пришлёт предупреждение, если с массивом что-то не так.

Решение

В контроллерах LSI (включая популярные серии MegaRAID) есть встроенные возможности мониторинга через утилиту командной строки StorCLI. Она позволяет не только управлять массивами, но и получать их статус. Мы напишем скрипт, который будет проверять состояние RAID и отправлять уведомления (например, на почту или в Telegram) при проблемах.

Пошаговая инструкция

Шаг 1. Установка StorCLI

Утилита StorCLI поставляется производителем контроллера (Broadcom) и доступна для Windows и Linux.

Для Linux:

  1. Скачайте пакет с официального сайта Broadcom (требуется регистрация) или найдите в репозиториях некоторых дистрибутивов.
  2. Установите, например, для Ubuntu/Debian:bashsudo dpkg -i storcli_*.debДля CentOS/RHEL:bashsudo rpm -ivh storcli-*.rpm

Для Windows:

  1. Скачайте ZIP-архив с исполняемым файлом storcli64.exe.
  2. Распакуйте в удобную папку (например, C:\StorCLI).

После установки проверьте, что контроллер виден:

bash

storcli show all

Если утилита выводит информацию о контроллере, значит всё в порядке.

Шаг 2. Основные команды для проверки состояния

Чтобы понять, всё ли хорошо с массивом, нужно посмотреть несколько параметров.

Общий статус всех дисков и массивов:

Терминал: bash

storcli /c0 show all

Где c0 — номер контроллера (обычно 0). Эта команда покажет много информации. Нас интересуют строки с состоянием дисков и массивов.

Проверка состояния дисков (PD — Physical Drives):

Терминал: bash

storcli /c0 /eall /sall show

Вы увидите список всех физических дисков с их состоянием (Online, Failed, Rebuild и т.д.).

Проверка состояния логических томов (VD — Virtual Drives):

Терминал: bash

storcli /c0 /vall show

Статус виртуальных дисков: Optimal (всё хорошо), Degraded (один диск сбойный), Offline.

Краткий статус одной командой:

Терминал: bash

storcli /c0 show summary

Эта команда выводит сводку по контроллеру, включая общее состояние.

Шаг 3. Скрипт проверки и отправки оповещений

Напишем скрипт на bash (для Linux), который будет выполняться по расписанию и при обнаружении проблем отправлять сообщение.

Создайте файл /usr/local/bin/raid_check.sh:

Содержимое скрипта:
#!/bin/bash

# Настройки
CONTROLLER="c0"                     # Номер контроллера
LOG_FILE="/var/log/raid_check.log"   # Лог-файл
EMAIL="admin@example.com"            # Почта для оповещений
TELEGRAM_BOT_TOKEN="ваш_токен"       # Для Telegram (опционально)
TELEGRAM_CHAT_ID="ваш_chat_id"       # ID чата Telegram

# Функция отправки email
send_email() {
    echo "$1" | mail -s "RAID Alert on $(hostname)" "$EMAIL"
}

# Функция отправки Telegram (если настроено)
send_telegram() {
    if [ -n "$TELEGRAM_BOT_TOKEN" ] && [ -n "$TELEGRAM_CHAT_ID" ]; then
        curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
            -d chat_id="$TELEGRAM_CHAT_ID" \
            -d text="$1" > /dev/null
    fi
}

# Получаем статус виртуальных дисков
VD_STATUS=$(storcli /$CONTROLLER /vall show J)
# Используем вывод в JSON (ключ J) для удобства парсинга

# Проверяем, есть ли неоптимальные состояния
DEGRADED=$(echo "$VD_STATUS" | jq '.Controllers[0].ResponseData."Virtual Drives"[] | select(.State != "Optl")')
if [ -n "$DEGRADED" ]; then
    MESSAGE="ВНИМАНИЕ! На сервере $(hostname) RAID массив в состоянии не Optimal. Подробности: $(echo "$DEGRADED" | jq -c '.')"
    echo "$(date): $MESSAGE" >> "$LOG_FILE"
    send_email "$MESSAGE"
    send_telegram "$MESSAGE"
fi

# Проверяем состояние физических дисков (наличие Failed)
FAILED_DISKS=$(storcli /$CONTROLLER /eall /sall show J | jq '.Controllers[0].ResponseData."Drive Information"[] | select(.State == "Failed")')
if [ -n "$FAILED_DISKS" ]; then
    MESSAGE="ВНИМАНИЕ! На сервере $(hostname) обнаружены сбойные диски: $(echo "$FAILED_DISKS" | jq -c '.')"
    echo "$(date): $MESSAGE" >> "$LOG_FILE"
    send_email "$MESSAGE"
    send_telegram "$MESSAGE"
fi

Этот скрипт требует установленной утилиты jq для парсинга JSON. Установите её:

Терминал: bash

sudo apt install jq   # Debian/Ubuntu
sudo yum install jq   # CentOS/RHEL

Если вы не хотите использовать JSON, можно парсить обычный текстовый вывод, но JSON надёжнее.

Сделайте скрипт исполняемым:

Терминал: bash

sudo chmod +x /usr/local/bin/raid_check.sh

Шаг 4. Настройка отправки почты

Для отправки email через команду mail в Linux нужно установить почтовый сервер, например, ssmtp или postfix.

Установка ssmtp (простой вариант):

Терминал: bash

sudo apt install ssmtp mailutils
sudo nano /etc/ssmtp/ssmtp.conf

Пример конфигурации для Gmail:

Просто пример:

root=your@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=your_password
UseSTARTTLS=YES

Проверьте отправку:

Терминал: bash

echo "Test" | mail -s "Test" admin@example.com

Если используете Telegram, токен и chat ID можно получить, создав бота через @BotFather и найдя свой chat ID.

Шаг 5. Добавление в cron

Запускайте скрипт регулярно, например, каждые 30 минут:

Терминал: bash

sudo crontab -e

Добавьте строку:

Пример для CRON

*/30 * * * * /usr/local/bin/raid_check.sh

Теперь система будет проверять состояние RAID и оповещать вас при проблемах.

Шаг 6. Проверка работы

Намеренно создайте проблему (если есть запасной диск, можно имитировать сбой, выдернув диск) и убедитесь, что скрипт срабатывает. Или просто запустите его вручную и посмотрите лог.

После настройки мониторинга RAID вы будете узнавать о проблемах с дисками задолго до того, как они приведут к потере данных или простою сервера. StorCLI позволяет автоматизировать этот процесс, и это не требует больших усилий.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Популярные
Новые Старые

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
Menu