วิธีการตรวจสอบปริมาณ glusterfs


12

Glusterfs ในขณะที่เป็นระบบไฟล์แบบกระจายที่ดีแทบไม่มีวิธีที่จะตรวจสอบความสมบูรณ์ของมัน เซิร์ฟเวอร์สามารถไปมาได้ก้อนอิฐอาจเหม็นอับหรือล้มเหลวและฉันกลัวที่จะรู้ว่าเมื่อมันอาจจะสายเกินไป

เมื่อเร็ว ๆ นี้เรามีความล้มเหลวที่แปลกเมื่อทุกอย่างปรากฏว่าทำงาน แต่อิฐก้อนหนึ่งหล่นออกมาจากปริมาณ (พบโดยบังเอิญบริสุทธิ์)

มีวิธีที่ง่ายและเชื่อถือได้ (สคริปต์ cron หรือไม่) ที่จะแจ้งให้ฉันทราบเกี่ยวกับสถานะสุขภาพของปริมาณGlusterFS 3.2ของฉัน


ตอนนี้เราใช้การตรวจสอบสคริปต์เชลล์โดยใช้สคริปต์สกปรก: check_gluster.sh
Arie Skliarouk

มีลักษณะที่glfs-health.sh
quanta

1
ฉันตรวจสอบ glfs-health.sh และดูเหมือนว่าเป็นรุ่นเก่าของ glusterfs ซึ่งควบคุมการกำหนดค่าไฟล์ ฉันจะชี้แจงคำถามของฉันเพื่อเป็นตัวแทนของ glusterfs 3.2
Arie Skliarouk

คำตอบ:


3

สิ่งนี้ได้รับการร้องขอจากผู้พัฒนา GlusterFS มาระยะหนึ่งแล้วและไม่มีวิธีแก้ปัญหาแบบใหม่ที่คุณสามารถใช้ได้ อย่างไรก็ตามด้วยสคริปต์บางอย่างมันเป็นไปไม่ได้

ระบบ Gluster ที่ค่อนข้างสมบูรณ์นั้นได้รับการจัดการโดยคำสั่ง gluster เดียวและด้วยตัวเลือกไม่กี่ตัวคุณสามารถเขียนสคริปต์การตรวจสอบสุขภาพได้ด้วยตัวเอง ดูที่นี่สำหรับข้อมูลรายชื่อเกี่ยวกับอิฐและปริมาณ - http://gluster.org/community/documentation/index.php/Gluster_3.2:_Displaying_Volume_Information

ในการตรวจสอบประสิทธิภาพให้ดูที่ลิงค์นี้ - http://gluster.org/community/documentation/index.php/Gluster_3.2:_Monitoring_your_GlusterFS_Workload

อัปเดต: โปรดพิจารณาอัปเกรดเป็นhttp://gluster.org/community/documentation/index.php/About_GlusterFS_3.3

คุณดีกว่าอยู่เสมอในการออกรุ่นล่าสุดเนื่องจากพวกเขาดูเหมือนจะมีการแก้ไขข้อบกพร่องมากขึ้นและได้รับการสนับสนุนเป็นอย่างดี แน่นอนใช้การทดสอบของคุณเองก่อนที่จะย้ายไปปล่อยรุ่นใหม่ - http://vbellur.wordpress.com/2012/05/31/31/upgrading-to-glusterfs-3-3/ :)

มีคำแนะนำสำหรับผู้ดูแลระบบพร้อมส่วนเฉพาะสำหรับการตรวจสอบการติดตั้ง GlusterFS 3.3 ของคุณในบทที่ 10 - http://www.gluster.org/wp-content/uploads/2012/05/Gluster_File_System-3.3.0-Administr_Guide-en-US .ไฟล์ PDF

ดูที่นี่สำหรับสคริปต์ nagios อื่น - http://code.google.com/p/glusterfs-status/


ขอบคุณ Chida ฉันเดาว่าอะไรที่ทำให้ฉันต้องวางสายคือบางคน ( github.com/semiosis/puppet-gluster ) กำลังตรวจสอบความมันผ่านตาราง proc ('- ด้วยอิฐ' ฯลฯ ) และ logfiles (egrep 'E' สำหรับข้อผิดพลาด) และบางคนกำลังใช้ CLI และฉันไม่รู้ว่ามีแนวโน้มที่จะรายงานสถานะของ gluster อย่างแม่นยำมากขึ้น
r_2

ฉันขอแนะนำให้ใช้ CLI เนื่องจากเป็นหนึ่งใน GlusterFS ที่แนะนำและมีแนวโน้มที่จะทันสมัย
Chida


2

โปรดตรวจสอบสคริปต์ที่แนบมาที่https://www.gluster.org/pipermail/gluster-users/2012-June/010709.htmlสำหรับ gluster 3.3; มันอาจจะปรับได้ง่ายเพื่อ 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

1

ฉันสามารถกำหนดค่าการตรวจสอบ nagios สำหรับ glusterfs ตามที่ระบุไว้ด้านล่าง:

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


1
เนื่องจากลิงค์เชื่อมต่อไปตามกาลเวลาเราจะชอบถ้าคุณสามารถรวมสาระสำคัญของคำตอบไว้ที่ ServerFault
Ladadadada

1

@Arie Skliarouk ของคุณcheck_gluster.shมีการพิมพ์ผิดในบรรทัดสุดท้ายคุณ grep สำหรับแทนexitst existฉันไปข้างหน้าและเขียนใหม่เพื่อให้มีขนาดกะทัดรัดขึ้นเล็กน้อยและลบข้อกำหนดสำหรับไฟล์ชั่วคราว

#!/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" คือสิ่งที่เขียนในบันทึก ฉันไม่ได้ซื้อข้อได้เปรียบ "กะทัดรัด" - สคริปต์นั้นยากที่จะเข้าใจเมื่อมีการใช้งานไลน์มากเกินไป ไฟล์ชั่วคราวคือราคาถูกที่จะจ่ายสำหรับรหัสที่เข้าใจง่าย
Arie Skliarouk

@ArieSkliarouk: อัปเดตเพื่อให้ครอบคลุมทั้งสองกรณี แต่ได้รับการเตือนล่วงหน้าว่าข้อความที่เกี่ยวข้องถูกลบออกในเดือนพฤศจิกายน 2011 ดูgit.gluster.org/... ดังนั้นจึงเป็นไปได้ว่าจะไม่ทำงานกับ Glusters รุ่นใหม่ หากคุณพบว่ารหัสที่สั้นกว่านั้นยากที่จะเข้าใจนั่นเป็นเรื่องดี แต่มันก็มีความแข็งแกร่งกว่าการใช้ไฟล์ชั่วคราวดังนั้นให้พิจารณาการสร้างใหม่เพื่อความสะดวกในการอ่านแทนการเลิกใช้เพราะขาดคุณสมบัติ
BMDan

1
ตัวแก้ไขที่ไม่ระบุชื่อระบุว่าgluster volume info | awk ...สามารถย่อgluster volume listได้
Lekensteyn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.