Làm thế nào để theo dõi khối lượng glusterfs


12

Glusterfs, trong khi là một hệ thống tệp phân tán đẹp, hầu như không có cách nào để giám sát tính toàn vẹn của nó. Máy chủ có thể đến và đi, gạch có thể bị cũ hoặc thất bại và tôi sợ phải biết về điều đó khi có lẽ đã quá muộn.

Gần đây, chúng tôi đã có một thất bại kỳ lạ khi mọi thứ dường như hoạt động, nhưng một viên gạch rơi ra từ khối lượng (được tìm thấy bởi sự trùng hợp thuần túy).

Có cách nào đơn giản và đáng tin cậy (tập lệnh cron không?) Sẽ cho tôi biết về tình trạng sức khỏe của tập GlusterFS 3.2 của tôi ?


Hiện tại, chúng tôi sử dụng giám sát dựa trên tập lệnh shell bẩn: check_gluster.sh
Arie Skliarouk

Có một cái nhìn tại glfs-health.sh .
lượng tử

1
Tôi đã kiểm tra glfs-health.sh và có vẻ như nó dành cho các phiên bản cũ của glusterfs, được kiểm soát tập tin cấu hình. Tôi sẽ làm rõ câu hỏi của tôi để đại diện cho glusterfs 3.2.
Arie Skliarouk

Câu trả lời:


3

Điều này đã được yêu cầu cho các nhà phát triển GlusterFS trong một thời gian và bây giờ bạn không thể sử dụng giải pháp vượt trội nào. Tuy nhiên, với một vài kịch bản thì không phải là không thể.

Khá nhiều toàn bộ hệ thống Gluster được quản lý bởi một lệnh gluster duy nhất và với một vài tùy chọn, bạn có thể tự viết các kịch bản theo dõi sức khỏe. Xem ở đây để biết thông tin về danh sách về khối lượng và khối lượng - http://gluster.org/community/documentation/index.php/Gluster_3.2:_Displaying_Volume_In information

Để theo dõi hiệu suất, hãy xem liên kết này - http://gluster.org/community/documentation/index.php/Gluster_3.2:_Monitoring_your_GlusterFS_Workload

CẬP NHẬT: Hãy xem xét nâng cấp lên http://gluster.org/community/documentation/index.php/ về_GlusterFS_3.3

Bạn luôn tốt hơn khi được phát hành phiên bản mới nhất vì chúng dường như có nhiều sửa lỗi hơn và được hỗ trợ tốt. Tất nhiên, hãy chạy thử nghiệm của riêng bạn trước khi chuyển sang bản phát hành mới hơn - http://vbellur.wordpress.com/2012/05/31/upgrad-to-glusterfs-3-3/ :)

Có một hướng dẫn quản trị với phần cụ thể để theo dõi cài đặt GlusterFS 3.3 của bạn trong Chương 10 - http://www.gluster.org/wp-content/uploads/2012/05/Gluster_File_System-3.3.0-Ad dùng_Guide-en-US .pdf

Xem ở đây để biết một tập lệnh nagios khác - http://code.google.com.vn/p/glusterfs-status/


Cảm ơn Chida, tôi đoán điều khiến tôi gác máy là một số người ( github.com/semiosis/puppet-gluster ) đang theo dõi ánh sáng qua bảng Proc ('--with-brick', v.v.) và logfiles (ví dụ: 'E' lỗi) và một số người đang sử dụng CLI và tôi không biết có khả năng báo cáo chính xác trạng thái của ánh sáng.
r_2

Tôi khuyên bạn nên sử dụng CLI vì đó là một GlusterFS khuyến nghị và nhất định sẽ được cập nhật.
Chida


2

Vui lòng kiểm tra tập lệnh đính kèm tại https://www.gluster.org/pipermail/gluster-users/2012-June/010709.html để xem ánh sáng 3.3; nó có thể dễ dàng thích nghi với ánh sáng 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

@Arie Skliarouk, bạn check_gluster.shcó một lỗi đánh máy trên dòng cuối cùng, bạn grep exitstthay vì exist. Tôi đã tiếp tục và viết lại nó để gọn hơn một chút và để loại bỏ yêu cầu cho một tệp tạm thời.

#!/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
Lỗi đánh máy "exitst" là những gì được ghi trong nhật ký. Tôi không mua lợi thế "nhỏ gọn" - kịch bản khó hiểu hơn nhiều khi các dòng bị quá tải. Tệp tạm thời là giá rẻ để trả cho mã dễ hiểu.
Arie Skliarouk

@ArieSkliarouk: Được cập nhật để bao gồm cả hai trường hợp, nhưng được báo trước rằng tin nhắn có liên quan đã bị xóa vào tháng 11 năm 2011; xem git.gluster.org/ . Vì vậy, điều này có khả năng sẽ không hoạt động trên các Gluster mới hơn. Nếu bạn thấy mã ngắn hơn khó hiểu hơn, thì tốt, nhưng nó mạnh hơn đáng kể so với sử dụng tệp tạm thời, vì vậy hãy xem xét tái cấu trúc nó để dễ đọc thay vì loại bỏ nó vì thiếu thuộc tính đó.
BMDan

1
Một biên tập viên ẩn danh lưu ý rằng gluster volume info | awk ...có thể được viết tắt gluster volume list.
Lekensteyn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.