Скрипт мониторинга состояния Raid средствами MegaCli на Linux

У меня есть сервер IBM System x3650 M3 с установленной на нем Raid контроллером IBM ServeRAID M5015 SAS/SATA Controller и собранном на нем массивом дисков.

Ранее я писал об установке драйверов и утилиты MegaCli в своей статье - Установка утилиты MegaRAID на Linux. Сейчас я опишу как сделать скрипт по сбору данных по состоянию дисков.

Для начала нам необходимо создать файл, к примеру "monitoring.awk", в папке /opt/MegaRAID/MegaCli, там где установлена утилита, с содержимым:

#Собираем необходимые данные
/Device Id/ { counter += 1; device[counter] = $3 }
/Firmware state/ { state_drive[counter] = $3 }
/Inquiry/ { name_drive[counter] = $3 " " $4 " " $5 " " $6 }
/Media Error Count/ { media_error[counter] = $3 }
/Other Error Count/ { other_error[counter] = $3 }
 END {
#Компонуем и выводим
for (i=1; i<=counter; i+=1) printf ( "Device %02d (%s) status is: %s Error: %d \n",
    device[i],
    name_drive[i],
    state_drive[i],
    media_error[i] + other_error[i]);
}

Теперь можно запустить и увидеть результат.

# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL | awk -f /opt/MegaRAID/MegaCli/analysis.awk
Device 25 (9SP1GWNGST95555530NS 42D0743 42D0746IBM BE1A) status is: Online, Error: 0
Device 26 (9SP1GWKRST95555530NS 42D0743 42D0746IBM BE1A) status is: Online, Error: 0
Device 27 (9SP1GMX3ST95555530NS 42D0743 42D0746IBM BE1A) status is: Online, Error: 0
Device 28 (9SP1GWK0ST95555530NS 42D0743 42D0746IBM BE1A) status is: Online, Error: 0
Device 29 (9SP1GN4NST95555530NS 42D0743 42D0746IBM BE1A) status is: Online, Error: 0

Данный скрипт можно вставить в крон и запускать по времени и в зависимости от изменения высылать сообщение на почту.

Скрипт еще буду дорабатывать и вылажу его финальное дополнение.