Glusterfs hacimleri nasıl izlenir


12

Glusterfs, güzel bir dağıtılmış dosya sistemi olmakla birlikte, bütünlüğünü izlemek için neredeyse hiçbir yol sunmaz. Sunucular gelip gidebilir, tuğlalar bayatlayabilir veya başarısız olabilir ve muhtemelen çok geç olduğunda bunu bilmekten korkuyorum.

Son zamanlarda, her şey işe yaradığında garip bir başarısızlık yaşadık, ancak bir tuğla hacimden düştü (saf tesadüf tarafından bulundu).

GlusterFS 3.2 birimimin sağlık durumu hakkında bana bilgi verecek basit ve güvenilir bir yol var mı (cron betiği?) ?


Şimdilik kirli bir kabuk komut dosyası tabanlı izleme kullanıyoruz: check_gluster.sh
Arie Skliarouk

Glfs-health.sh adresine bir göz atın .
quanta

1
Glfs-health.sh dosyasını kontrol ettim ve yapılandırma dosyası kontrollü olan glusterfs'in eski sürümleri için olduğu anlaşılıyor. Sorumluluğumu glusterfs'i temsil etmek için açıklığa kavuşturacağım 3.2.
Arie Skliarouk

Yanıtlar:


3

Bu, bir süredir GlusterFS geliştiricilerine bir talep oldu ve kullanabileceğiniz hiçbir şey yok. Ancak, birkaç senaryo ile imkansız değildir.

Hemen hemen tüm Gluster sistemi tek bir gluster komutu ile yönetilir ve birkaç seçenekle kendinize sağlık izleme komut dosyaları yazabilirsiniz. Tuğlalar ve hacimler hakkında bilgi listelemek için buraya bakın - http://gluster.org/community/documentation/index.php/Gluster_3.2:_Displaying_Volume_Information

Performansı izlemek için şu bağlantıya bakın - http://gluster.org/community/documentation/index.php/Gluster_3.2:_Monitoring_your_GlusterFS_Workload

GÜNCELLEME: http://gluster.org/community/documentation/index.php/About_GlusterFS_3.3 sürümüne geçmeyi düşünün

Daha fazla hata düzeltmesine sahip oldukları ve iyi desteklendikleri için en son sürümde olmaktan her zaman daha iyisiniz. Tabii, daha yeni bir sürüme geçmeden önce kendi testlerinizi yapın - http://vbellur.wordpress.com/2012/05/31/upgrading-to-glusterfs-3-3/ :)

Bölüm 10'da GlusterFS 3.3 kurulumunuzu izlemek için özel bölüm içeren bir yönetici kılavuzu vardır - http://www.gluster.org/wp-content/uploads/2012/05/Gluster_File_System-3.3.0-Administration_Guide-en-US .pdf

Başka bir nagios betiği için buraya bakın - http://code.google.com/p/glusterfs-status/


Teşekkürler Chida, sanırım beni asan şey bazı milletlerin ( github.com/semiosis/puppet-gluster ) proc tablosu ('--with-brick', vb.) Ve logfiles (egrep 'E') aracılığıyla oluğu izliyor hata için) ve bazı insanlar CLI kullanıyor ve gluster'ın durumunu doğru bir şekilde bildirme olasılığı daha yüksek.
r_2

GlusterFS'nin önerdiği ve güncel olması gerektiği için CLI kullanmanızı tavsiye ederim.
Chida


2

Lütfen ekli komut dosyasını gluster 3.3 için https://www.gluster.org/pipermail/gluster-users/2012-Haziran/010709.html adresinden kontrol edin ; muhtemelen oluk 3.2'ye kolayca uyarlanabilir.

#!/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


1

@Arie Skliarouk, check_gluster.shbir yazım hatası var - son satırda exitstyerine grep exist. Devam ettim ve biraz daha kompakt olmasını ve geçici bir dosya gereksinimini ortadan kaldırmayı yeniden yazdım.

#!/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
"Exitst" yazım hatası günlüklere yazılan şeydir. "Kompakt" avantajı satın almıyorum - satırlar aşırı yüklendiğinde komut dosyasını anlamak çok daha zordur. Geçici dosya anlaşılması kolay kod için ödemek için ucuz fiyattır.
Arie Skliarouk

@ArieSkliarouk: Her iki durumu da kapsayacak şekilde güncellendi, ancak ilgili iletinin Kasım 2011'de kaldırıldığına dikkat edin; bkz. git.gluster.org/… . Bu nedenle, bu muhtemelen yeni Glusters üzerinde çalışmayacaktır. Kısa kodun anlaşılmasını zor bulursanız, sorun değil, ancak geçici bir dosya kullanmaktan çok daha sağlamdır, bu nedenle algılanan öznitelik eksikliği nedeniyle reddetmek yerine yeniden okunabilirlik için yeniden düzenlemeyi düşünün.
BMDan

1
Anonim bir editör, gluster volume info | awk ...kısaltılabileceğini kaydetti gluster volume list.
Lekensteyn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.