У меня есть сервер 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
Данный скрипт можно вставить в крон и запускать по времени и в зависимости от изменения высылать сообщение на почту.
Скрипт еще буду дорабатывать и вылажу его финальное дополнение.