系统监控类

nagios监控NFS是否被正确的挂载[原创]

今天蚊子与大家分享的nagios监控脚本是监控NFS是否被挂载上的脚本

先说下我写这个脚本的初衷吧,事情还是因为上次网络部调整我服务器机柜位置引起的,当时蚊子自信满满的认为服务器上我已经配置好了自动挂载NFS,所以我根本不用担心NFS挂载的情况,当服务器启动恢复后,我的nagios给我发了一个recovery的邮件,我就想当然的认为好了,也就没管。第二天开发人员居然找到我,问我昨天是不是有两台机器重启了,我说是呀,他们就说NFS没有挂载上,我当时还很强调说不可能呢,结果我手动重启了一下昨天的机器,发现真的没有自动挂载上,让我很是郁闷。

没有自动挂载到还不是让人最郁闷,那个我已经通过技术问题解决了,郁闷的是有了问题居然不是nagios第一时间通知我。由于之前我使用的是nagios的check_disk这个脚本,在NFS磁盘有问题,不可读写或空间不足的时候给我报过警,但我经过测试发现,这个脚本只能监控本地磁盘(包括挂载好的NFS)可用性,而不管是否NFS被正确挂载了,所以才有了今天这个脚本。

脚本名称:check_nfsmount
脚本作用:
1,检查NFS磁盘是否被挂载
2,报告哪些NFS没有被挂载
使用方法:
1,将需要mount的NFS磁盘写入到fstab,如下

# cat /etc/fstab
/dev/VolGroup00/LogVol00 /                       ext3    defaults,usrquota,grpquota        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0
192.168.211.129:/home/tst       /data/tst       nfs     defaults        0 0
192.168.211.129:/home/tst02     /data/tst02     nfs     defaults        0 0
192.168.211.129:/home/tst03     /data/tst03     nfs     defaults        0 0

2,将脚本nagios安装目录的libexec下,并赋予可执行权限
3,配置nrpe配置文件,添加相应的command
4,nagios监控机上添加相应的服务
脚本内容:

对于脚本中还没有考虑到的还希望各位指出。

Related Post

1 Comment

  1. # Location of the showmount command (if not in path)
    SHOWMOUNT=”/sbin/showmount”

    # Don’t change anything below here

    # Nagios return codes
    STATE_OK=0
    STATE_WARNING=1
    STATE_CRITICAL=2
    STATE_UNKNOWN=3
    STATE_DEPENDENT=4

    if [ ! -x “${SHOWMOUNT}” ]
    then
    echo “UNKNOWN: $SHOWMOUNT not found or is not executable by the nagios user”
    exitstatus=$STATE_UNKNOWN
    exit $exitstatus
    fi

    PROGNAME=basename $0

    print_usage() {
    echo “Usage: $PROGNAME -H ”
    echo “”
    echo “Notes:”
    echo “-H: Hostname – Can be a hostname or IP address”
    echo “”
    }

    print_help() {
    print_usage
    echo “”
    echo “This plugin will check the NFS mounts on a remote (or local with -H localhost) NFS server.”
    echo “”
    exit 0
    }

    #exitstatus=${STATE_UNKNOWN} #default

    while test -n “$1”; do
    case “$1” in
    –help)
    print_help
    exit $STATE_OK
    ;;
    -h)
    print_help
    exit $STATE_OK
    ;;
    -H)
    HOSTNAME=$2
    shift
    ;;
    *)
    print_help
    exit $STATE_OK
    esac
    shift
    done

    # Check arguments for validity
    if [ -z ${HOSTNAME} ]
    then
    echo “You must specify a hostname (or localhost to test the local system)”
    print_usage
    exitstatus=$STATE_UNKNOWN
    exit $exitstatus
    fi

    # Run basic showmount and find our status
    SHOWMOUNT_OUTPUT=${SHOWMOUNT} -e ${HOSTNAME} 2>&1

    if [ $? -ne 0 ]
    then
    exitstatus=${STATE_CRITICAL}
    else
    exitstatus=${STATE_OK}
    fi

    # Remove the wildcards as they cause a complete listing of CWD
    # Uncomment the following 2 lines if you wish to have a list of shares
    # in your Nagios output
    #CLEANED_SHOWMOUNT_OUTPUT=${SHOWMOUNT} -e ${HOSTNAME} 2>&1 | sed -e s/\*//g
    #echo ${CLEANED_SHOWMOUNT_OUTPUT}

    exit $exitstatus

Leave a Reply

Your email address will not be published. Required fields are marked *