amarao (amarao_san) wrote,
amarao
amarao_san

Монитор LSI-рейда

Если кому-то понадобится. Насколько я понимаю, у всех поделок а-ля LSI одинаковые по синтаксису командной строки мониторы с разными названиями. Те, которые я знаю:

megarc.bin
megaraid
cmdtool
raidmon

Ниже скрипт, который проверяет состояние рейда (в моём случае единственного, расширение до нескольких, я думаю, делается легко).

Что он делает:

1) Проверяет состояние рейда (обнаруживает ребилд, degradated)
2) Проверяет наличие хотспаре
3) Проверяет наличие неприкаянных винтов (которые в рейде есть, но не используются ни в массиве ни в hotspare), обычно такие появляются, если воткнуть винт и забыть его пометить как hotspare.

По итогам проверки:

В случае проблем: пишет на указанные емейлы (использует mail), пишет в syslog.
В случае отсутствия проблем пишет строчку с статусом в сислог.

У меня оно настроено в кроне раз в 10 минут (итого - в логе всегда фиксируется выполнение скрипта, если там записей скрипта нет, значит что-то отвалилось).

Запись об отсутствии проблем выглядит так:
Jan 11 20:43:52 srv root:  Logical Drive : 0( Adapter: 0 ): Status: OPTIMAL (Hotspare ok)


Запись о проблеме выглядит так:
Jan 11 20:45:08 srv root: RAID failed
Jan 11 20:45:08 srv root:  Logical Drive : 0( Adapter: 0 ): Status: DEGRADED (___NO HOTSPARE___ disk found!)


После ребилда сообщение превращается в:

Jan 11 23:36:21 srv root:  Logical Drive : 0( Adapter: 0 ): Status: OPTIMAL (___NO HOTSPARE___ disk found!)



#!/bin/sh

#### CONFIGURATION ######
#
# email - emails, separated by colomn (,)
# CMDTOOL - full path to raid cmd tool (cmdtool, megamon, megarc.bin, etc)
# array - monitored array number (starts from '0').
#
#########################
email="adm@domain.ru,helpdesk@domain.ru"
CMDTOOL="/usr/local/sbin/megarc.bin"
array=0


### script body ###

bad_pattern="(DEGRADED|RBLD|UNUSABLE)"
hotspare_pattern="HotSpare"

diag=`$CMDTOOL -dispCfg -a$array|grep -v Scanning`

status_text=`echo $diag|strings|grep Status|head -n 1`
echo "$diag"|grep -E $bad_pattern >/dev/null
status=$?

echo "$diag"|grep $hotspare_pattern >/dev/null
hotspare=$?

if test  $hotspare -eq 0
then
        hotspare_text="(Hotspare ok)"
else
        hotspare_text="(___NO HOTSPARE___ disk found!)"
fi

if test  $status -eq 0  -o !  $hotspare -eq 0
then
        message="Error has been detected on `hostname --fqdn` at `date` :\\n\\r\\n\\r\\n"
        message=$message"\\n\\n\\t\\tRAID STATUS: $status_text\\n"
        message=$message"\\n\\n\\t\\tHOTSPARE STATUS:$hotspare_text\\n"
        message=$message"\\n\\n\\n\\nraw data:\\n\\n$diag"
        echo -e "$message"| mail $email -s "RAID FAILED  on `hostname --fqdn`"
        logger "RAID failed"
        logger "$status_text $hotspare_text"
else
        logger "$status_text $hotspare_text"

fi

Tags: linux, lsi, raid, администрирование, мониторинг
Subscribe

  • ансибло-философия

    А вот я хочу продолжить думать умное про ансибл, ci/cd и прочую рабочую фигню между гитом и сервером. Классическое программирование стремится…

  • positive nagging

    Для повышения морали в коллективе было решено запретить токсичные и негативные сообщения в чате. Теперь все сообщения в чате выглядят так: Resolved…

  • Шли годы, а я учусь башу.

    Офигеть. Офигеть. echo <(echo hello) foobar /dev/fd/63 foobar Я этого честно не знал. Я знал, что в конце можно, а что можно в середине -…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 4 comments