গ্লাস্টারফস ভলিউম কীভাবে নিরীক্ষণ করা যায়


12

গ্লাস্টারফগুলি একটি দুর্দান্ত বিতরণকৃত ফাইল সিস্টেম হওয়ার সময় এটির সততা নিরীক্ষণের প্রায় কোনও উপায় সরবরাহ করে না। সার্ভারগুলি আসতে এবং যেতে পারে, ইটগুলি বাসি হয়ে যেতে পারে বা ব্যর্থ হতে পারে এবং সম্ভবত যখন খুব দেরি হয় তখন আমি তার সম্পর্কে জানতে ভয় পাই।

সবকিছু যখন কাজ করার সময় উপস্থিত হয়েছিল তখন আমরা একটি অদ্ভুত ব্যর্থতা পেয়েছি, তবে একটি ইট ভলিউম থেকে পড়েছে (খাঁটি কাকতালীয়তার দ্বারা পাওয়া গেছে)।

একটি সহজ এবং নির্ভরযোগ্য উপায় (ক্রোন লিপি?) আছে যা আমাকে আমার গ্লাস্টারএফএস 3.2 ভলিউমের স্বাস্থ্যের অবস্থা সম্পর্কে জানতে দেবে ?


আপাতত আমরা একটি নোংরা শেল স্ক্রিপ্ট ভিত্তিক মনিটরিং ব্যবহার করি: চেক_গ্লাস্টার.শ
অ্যারি স্ক্লিয়েরুক

Glfs-health.sh এ দেখুন ।
কোয়ান্টা

1
আমি glfs-health.sh পরীক্ষা করে দেখেছি এবং দেখে মনে হচ্ছে এটি গ্লাস্টারফগুলির পুরানো সংস্করণগুলির জন্য যা কনফিগারেশন-ফাইল নিয়ন্ত্রিত ছিল। আমি গ্লাস্টারফগুলি ৩.২ উপস্থাপনের জন্য আমার প্রশ্নটি পরিষ্কার করব।
অ্যারি স্ক্লিয়েরুক

উত্তর:


3

এটি এখন কিছু সময়ের জন্য গ্লাস্টারএফএস বিকাশকারীদের কাছে একটি অনুরোধ এবং আপনি ব্যবহার করতে পারেন এমন বাক্সের বাইরে কোনও সমাধান নেই। তবে কয়েকটি স্ক্রিপ্ট দিয়ে এটি অসম্ভব নয়।

বেশ কয়েকটি পুরো গ্লাস্টার সিস্টেমটি একটি একক গ্লাস্টার কমান্ড দ্বারা পরিচালিত হয় এবং কয়েকটি বিকল্পের সাহায্যে আপনি নিজেকে স্বাস্থ্য পর্যবেক্ষণ স্ক্রিপ্টগুলি লিখতে পারেন। ইট এবং ভলিউম সম্পর্কিত তথ্য তালিকাভুক্তির জন্য এখানে দেখুন - http://gluster.org/commune/docamentation/index.php/Gluster_3.2:_ ডিসপ্লেিং_ ভলিউম_ তথ্য

পারফরম্যান্স নিরীক্ষণ করতে, এই লিঙ্কটি দেখুন - http://gluster.org/commune/docamentation/index.php/Gluster_3.2:_ পর্যবেক্ষণ_আপনি_গ্লাস্টারএফএস_ওয়ারকলোড

আপডেট: http://gluster.org/commune/docamentation/index.php/About_GlusterFS_3.3.3 এ আপগ্রেড করার কথা বিবেচনা করুন

আপনি সর্বদা সর্বশেষতম রিলিজে থাকায় আরও ভাল থাকবেন যেহেতু তাদের কাছে আরও বাগ সংশোধন এবং ভাল সমর্থন রয়েছে বলে মনে হয়। অবশ্যই, একটি নতুন রিলিজে যাওয়ার আগে নিজের পরীক্ষা চালান - http://vbellur.wordpress.com/2012/05/31/upgrading-to-glusterfs-3-3/ :) :)

অধ্যায় 10 - এ আপনার গ্লাস্টারএফএস 3.3 ইনস্টলেশন পর্যবেক্ষণের জন্য সুনির্দিষ্ট বিভাগ সহ একটি প্রশাসক গাইড রয়েছে - http://www.gluster.org/wp-content/uploads/2012/05/Gluster_File_S systemm-3.3.0- প্রশাসনিক_গাইড-en- ইউএস .pdf

অন্য নাগিও স্ক্রিপ্টের জন্য এখানে দেখুন - http://code.google.com/p/glusterfs-status/


ধন্যবাদ চিদা, আমি অনুমান করি যে আমাকে কীভাবে ঝুলিয়ে রেখেছিল তা হ'ল কিছু লোক ( github.com/semiosis/puppet-gluster ) প্রোক টেবিল ('- উইথ-ইট' ইত্যাদি) এবং লগফাইলে (উদাহরণস্বরূপ 'ই') দিয়ে গ্লাস্টার পর্যবেক্ষণ করছে ত্রুটির জন্য), এবং কিছু লোক সিএলআই ব্যবহার করছে এবং আমার কোনও ধারণা নেই যা গ্লাস্টারের অবস্থার যথাযথভাবে প্রতিবেদন করার সম্ভাবনা বেশি।
r_2

আমি সিএলআই ব্যবহারের পরামর্শ দিচ্ছি কারণ এটিই একটি গ্লাস্টারএফএস প্রস্তাব দেয় এবং এটি আপ-টু-ডেট হতে বাধ্য।
চিদা


2

গ্লাস্টার ৩.৩ এর জন্য দয়া করে সংযুক্ত স্ক্রিপ্টটি https://www.gluster.org/pipermail/gluster-users/2012- জুন/010709.html এ দেখুন; এটি সম্ভবত গ্লাস্টার ৩.২ এর সাথে সহজেই মানিয়ে যায়।

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

আমি নীচে উল্লিখিত হিসাবে glusterfs জন্য নাগিও পর্যবেক্ষণ কনফিগার করতে সক্ষম ছিল:

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


1
লিঙ্কগুলি সময়ের সাথে সাথে মারা যাওয়ার কারণে, আপনি যদি সার্ভারফল্টে উত্তরের সারাংশটি এখানে অন্তর্ভুক্ত করতে পারেন তবে আমরা এটিকে পছন্দ করব।
লাড্ডাড্ডা

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
"এক্সিস্টেট" টাইপো হ'ল লগগুলিতে যা লেখা থাকে। আমি "কমপ্যাক্ট" সুবিধাটি কিনে নিই না - লাইনগুলি যখন বোঝা চাপানো হয় তখন স্ক্রিপ্টটি বোঝা আরও শক্ত। অস্থায়ী ফাইলটি সহজে বোঝার কোডের জন্য মূল্য দিতে সস্তা দাম।
অ্যারি স্ক্লিয়েরুক

@ অ্যারিস্ক্লিয়ারিউক: উভয় ক্ষেত্রেই কভার করার জন্য আপডেট করা হয়েছে, তবে আগে থেকেই জানানো উচিত যে সম্পর্কিত বার্তাটি ২০১১ সালের নভেম্বরে সরানো হয়েছে; দেখতে git.gluster.org/... । সুতরাং, এটি সম্ভবত নতুন গ্লাস্টারগুলিতে কাজ করবে না। যদি আপনি সংক্ষিপ্ত কোডটি বোঝার পক্ষে আরও কঠিন ধারণা পান তবে এটি ভাল, তবে এটি একটি অস্থায়ী ফাইল ব্যবহারের চেয়ে উল্লেখযোগ্যভাবে বেশি শক্তিশালী, সুতরাং সেই বৈশিষ্ট্যের অভাবের কারণে এটি খণ্ডন না করে পঠনযোগ্যতার জন্য এটি রিফ্যাক্টরিং বিবেচনা করুন।
বিএমডান

1
একজন বেনাম সম্পাদক উল্লেখ করেছেন যা gluster volume info | awk ...সংক্ষেপে সংক্ষেপণ হতে পারে gluster volume list
লেকেনস্টেইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.