14 votes

Comment surveiller les volumes glusterfs

Glusterfs, tout en étant un système de fichiers distribué agréable, ne fournit pratiquement aucun moyen de surveiller son intégrité. Les serveurs peuvent aller et venir, les briques peuvent devenir obsolètes ou échouer et j'ai peur de le savoir quand il est probablement trop tard.

Récemment, nous avons eu une panne étrange : tout semblait fonctionner, mais une brique est tombée du volume (découverte par pure coïncidence).

Existe-t-il un moyen simple et fiable (cron script ?) qui me permettra de connaître l'état de santé de mon GlusterFS. 3.2 volume ?

0 votes

Pour l'instant nous utilisons une sale Shell Shell basée sur la surveillance : check_gluster.sh

0 votes

Jetez un coup d'œil à glfs-health.sh .

1 votes

J'ai vérifié le glfs-health.sh et il semble que ce soit pour les anciennes versions de glusterfs, qui étaient contrôlées par des fichiers de configuration. Je vais clarifier ma question pour représenter glusterfs 3.2.

3voto

Chida Points 2461

C'est une demande adressée aux développeurs de GlusterFS depuis un certain temps déjà et il n'existe aucune solution prête à l'emploi que vous puissiez utiliser. Cependant, avec quelques scripts ce n'est pas impossible.

La quasi-totalité du système Gluster est géré par une seule commande gluster et avec quelques options, vous pouvez écrire vous-même des scripts de surveillance de la santé. Voir ici pour des informations sur la liste des briques et des volumes -- http://gluster.org/community/documentation/index.php/Gluster_3.2:_Displaying_Volume_Information

Pour contrôler les performances, consultez ce lien -- http://gluster.org/community/documentation/index.php/Gluster_3.2:_Monitoring_your_GlusterFS_Workload

MISE À JOUR : Pensez à passer à la version http://gluster.org/community/documentation/index.php/About_GlusterFS_3.3

Il est toujours préférable d'utiliser la dernière version car elle semble avoir plus de corrections de bogues et être bien supportée. Bien sûr, effectuez vos propres tests avant de passer à une version plus récente http://vbellur.wordpress.com/2012/05/31/upgrading-to-glusterfs-3-3/ :)

Il existe un guide d'administration avec une section spécifique pour la surveillance de votre installation GlusterFS 3.3 au chapitre 10 --. http://www.gluster.org/wp-content/uploads/2012/05/Gluster_File_System-3.3.0-Administration_Guide-en-US.pdf

Voir ici pour un autre nagios script -- http://code.google.com/p/glusterfs-status/

0 votes

Merci Chida, je crois que ce qui m'a fait tiquer, c'est que certaines personnes ( github.com/semiosis/Puppet-gluster ) surveillent gluster via la table proc ('--with-brick', etc) et les fichiers journaux (egrep ' E ' pour erreur), et certaines personnes utilisent le CLI et je n'ai aucune idée de ce qui est le plus susceptible de rapporter avec précision l'état de gluster.

0 votes

Je vous recommande d'utiliser le CLI car c'est celui que GlusterFS recommande et il est forcément à jour.

2voto

S19N Points 1683

Veuillez vérifier le script joint à l'adresse suivante https://www.gluster.org/pipermail/gluster-users/2012-June/010709.html pour gluster 3.3 ; il est probablement facilement adaptable à gluster 3.2.

#!/bin/bash

# This Nagios script was written against version 3.3 of Gluster.  Older
# versions will most likely not work at all with this monitoring script.
#
# Gluster currently requires elevated permissions to do anything.  In order to
# accommodate this, you need to allow your Nagios user some additional
# permissions via sudo.  The line you want to add will look something like the
# following in /etc/sudoers (or something equivalent):
#
# Defaults:nagios !requiretty
# nagios ALL=(root) NOPASSWD:/usr/sbin/gluster peer status,/usr/sbin/gluster volume list,/usr/sbin/gluster volume heal [[\:graph\:]]* info
#
# That should give us all the access we need to check the status of any
# currently defined peers and volumes.

# define some variables
ME=$(basename -- $0)
SUDO="/usr/bin/sudo"
PIDOF="/sbin/pidof"
GLUSTER="/usr/sbin/gluster"
PEERSTATUS="peer status"
VOLLIST="volume list"
VOLHEAL1="volume heal"
VOLHEAL2="info"
peererror=
volerror=

# check for commands
for cmd in $SUDO $PIDOF $GLUSTER; do
    if [ ! -x "$cmd" ]; then
        echo "$ME UNKNOWN - $cmd not found"
        exit 3
    fi
done

# check for glusterd (management daemon)
if ! $PIDOF glusterd &>/dev/null; then
    echo "$ME CRITICAL - glusterd management daemon not running"
    exit 2
fi

# check for glusterfsd (brick daemon)
if ! $PIDOF glusterfsd &>/dev/null; then
    echo "$ME CRITICAL - glusterfsd brick daemon not running"
    exit 2
fi

# get peer status
peerstatus="peers: "
for peer in $(sudo $GLUSTER $PEERSTATUS | grep '^Hostname: ' | awk '{print $2}'); do
    state=
    state=$(sudo $GLUSTER $PEERSTATUS | grep -A 2 "^Hostname: $peer$" | grep '^State: ' | sed -nre 's/.* \(([[:graph:]]+)\)$/\1/p')
    if [ "$state" != "Connected" ]; then
        peererror=1
    fi
    peerstatus+="$peer/$state "
done

# get volume status
volstatus="volumes: "
for vol in $(sudo $GLUSTER $VOLLIST); do
    thisvolerror=0
    entries=
    for entries in $(sudo $GLUSTER $VOLHEAL1 $vol $VOLHEAL2 | grep '^Number of entries: ' | awk '{print $4}'); do
        if [ "$entries" -gt 0 ]; then
            volerror=1
            let $((thisvolerror+=entries))
        fi
    done
    volstatus+="$vol/$thisvolerror unsynchronized entries "
done

# drop extra space
peerstatus=${peerstatus:0:${#peerstatus}-1}
volstatus=${volstatus:0:${#volstatus}-1}

# set status according to whether any errors occurred
if [ "$peererror" ] || [ "$volerror" ]; then
    status="CRITICAL"
else
    status="OK"
fi

# actual Nagios output
echo "$ME $status $peerstatus $volstatus"

# exit with appropriate value
if [ "$peererror" ] || [ "$volerror" ]; then
    exit 2
else
    exit 0
fi

2voto

chandank Points 847

Il y a un plugin nagios disponible pour la surveillance. . Vous devrez peut-être le modifier pour votre version.

1voto

BMDan Points 7059

@Arie Skliarouk, votre check_gluster.sh a une faute de frappe sur la dernière ligne, vous recherchez exitst 代わりに exist . Je l'ai réécrit pour qu'il soit un peu plus compact, et pour supprimer la nécessité d'un fichier temporaire.

#!/bin/bash

# Ensure that all peers are connected
gluster peer status | grep -q Disconnected && echo "Peer disconnected." && exit 1

# Ensure that all bricks have a running log file (i.e., are sending/receiving)
for vol in $(gluster volume list); do
  for brick in $(gluster volume info "$vol" | awk '/^Brick[0-9]*:/ {print $2}'); do
    gluster volume log locate "$vol" "$brick";
  done;
done |
 grep -qE "does not (exist|exitst)" &&
 echo "Log file missing - $vol/$brick ." &&
 exit 1

1 votes

La typo "exitst" est ce qui est écrit dans les logs. Je ne crois pas à l'avantage "compact" - le script est beaucoup plus difficile à comprendre lorsque les lignes sont surchargées. Le fichier temporaire est un prix bon marché à payer pour un code facile à comprendre.

0 votes

@ArieSkliarouk : Mise à jour pour couvrir les deux cas, mais soyez prévenus que le message en question a été supprimé en novembre 2011 ; cf. git.gluster.org/ . Ainsi, cela ne fonctionnera probablement pas sur les Glusters plus récents. Si vous trouvez le code plus court plus difficile à comprendre, c'est bien, mais il est nettement plus robuste que l'utilisation d'un fichier temporaire, alors pensez à le remanier pour le rendre plus lisible au lieu de le rejeter pour un manque apparent de cet attribut.

1 votes

Un rédacteur anonyme a noté que gluster volume info | awk ... peut être abrégé en gluster volume list .

1voto

James Moore Points 281

J'ai pu configurer la surveillance nagios pour glusterfs comme indiqué ci-dessous :

http://gopukrish.wordpress.com/2014/11/16/monitor-glusterfs-using-nagios-plugin/

2 votes

Comme les liens disparaissent avec le temps, nous préférerions que vous incluiez l'essentiel de la réponse ici sur ServerFault.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X