[gull] Truc et astuces: check mdstat

felix felix at f-hauri.ch
Tue Mar 22 13:18:07 CET 2016


Voilà, il s'agit d'un cas particulier où la machine de backup (un nas
raid iomega hacké) est incapable d'envoyer un mail.

Du coup, le serveur qui à un accès ssh à la machine de backup peut:

    ssh backup cat /proc/mdstat

ou

    for shell in {"ssh backup ",}/bin/bash;do
        $shell <<<'sed "s/^/$HOSTNAME:\ /" /proc/mdstat'
    done

Qui répond qqch comme:

    backup: Personalities : [raid1] 
    backup: md1 : active raid1 sdb2[0] sda2[1]
    backup:       3274597760 blocks [2/2] [UU]
    backup:       
    backup: md0 : active raid1 sdb1[0] sda1[2]
    backup:       204608 blocks super 1.2 [2/2] [UU]
    backup:       
    backup: unused devices: <none>
    server: Personalities : [raid1]
    server: md0 : active raid1 sda1[0] sda2[1]
    server:       2374556480 blocks [2/2] [UU]
    server:       
    server: unused devices: <none>

(Lorsque tous les disques sont présent, je dois lire 3x `UU`)

Voici donc un petit (8 lignes) script à executer périodiquement, pour
envoyer un mail en cas de problème:

    #!/bin/bash
    TO=admin at exemple.ch
    SUBJECT="MDStat survey alert"

    BODY=$(for shell in {"ssh backup ",}/bin/bash;do
               $shell <<<'sed "s/^/$HOSTNAME:\ /" /proc/mdstat'
           done)

    [ -z "$BODY" ] || [ -n "${BODY//*UU*UU*UU*}" ] &&
        mail -s "$SUBJECT" $TO <<<"${BODY:-No mdstat files.}"

J'utilise /bin/bash pour assurer que la variable HOSTNAME soit renseignée.

Si `$BODY` est vide ou s'il contient moins de 3x `UU`, j'envoie un mail
contenant les deux mdstats ou un message indiquant un problème

(nb: je n'aime pas les regex en bash: lourd et syntaxe pas claire)

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list