服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 6439|回复: 1

nagios监控NFS是否被正确的挂载

[复制链接]
dirtysea 发表于 2010-11-30 13:29:03 | 显示全部楼层 |阅读模式
脚本名称: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监控机上添加相应的服务
脚本内容:
#!/bin/bash
#VERSION="1.0"
#AUTHOR by wenzizone.cn

. /usr/local/nagios/libexec/utils.sh
CHECKNAME="Mount NFS"
RESULT=""
EXIT_STATUS=$STATE_OK
NFSFSTAB=`LC_ALL=C awk '!/^#/ && $3 ~ /^nfs/ && $3 != "nfsd" && $4 !~ /noauto/ { print $1 }' /etc/fstab`
NFSMTAB=`LC_ALL=C awk '$3 ~ /^nfs/ && $3 != "nfsd" && $2 != "/" { print $1 }' /proc/mounts`
theend() {
    echo $RESULT
    exit $EXIT_STATUS
}
CHECK_MOUNT(){
    LIST=""
    for list in $NFSFSTAB
    do
        NFS_MOUNT=$(LC_ALL=C cat /proc/mounts |cut -d " " -f 1|grep "${list}$")
        if [ -z "${NFS_MOUNT}" ];then
            LIST="$LIST$list "
        fi
    done
    return $LIST
}
if [ -n "${NFSMTAB}" ];then
    if [ "${NFSFSTAB}" = "${NFSMTAB}" ];then
            RESULT="$CHECKNAME OK - NFS BE MOUNTED PROPERLY"
            EXIT_STATUS=$STATE_OK
    else
            CHECK_MOUNT
            RESULT="$CHECKNAME WARNING - ${LIST} NOT BE MOUNTED"
            EXIT_STATUS=$STATE_WARNING
    fi
else
    RESULT="$CHECKNAME CRITICAL - ALL NFS NOT BE MOUNTED"
    EXIT_STATUS=$STATE_CRITICAL
fi
theend
对于脚本中还没有考虑到的还希望各位指出。
 楼主| dirtysea 发表于 2010-11-30 13:30:13 | 显示全部楼层
在这几天使用过程中还是发现了一些小问题。如果nfs挂载的顺序没有按照fstab中写的顺序进行挂载,监控就会发出warning的警告,但报警信息中没挂载的硬盘信息是空的,实际查看机器确是所有挂载正常。
于是对我的脚本进行了调整,将check_mount函数提前运行,然后根据LIST变量内容判断是否挂载正常,调整后脚本的如下,同时后面提供了脚本下载地址。
#!/bin/bash
#VERSION="1.1"
#AUTHOR by wenzizone.cn

. /usr/local/nagios/libexec/utils.sh
CHECKNAME="Mount NFS"
RESULT=""
EXIT_STATUS=$STATE_OK
NFSFSTAB=`LC_ALL=C awk '!/^#/ && $3 ~ /^nfs/ && $3 != "nfsd" && $4 !~ /noauto/ { print $1 }' /etc/fstab`
NFSMTAB=`LC_ALL=C awk '$3 ~ /^nfs/ && $3 != "nfsd" && $2 != "/" { print $1 }' /proc/mounts`
theend() {
    echo $RESULT
    exit $EXIT_STATUS
}
CHECK_MOUNT(){
    LIST=""
    for list in $NFSFSTAB
    do
        NFS_MOUNT=$(LC_ALL=C cat /proc/mounts |cut -d " " -f 1|grep "${list}$")
        if [ -z "${NFS_MOUNT}" ];then
            LIST="$LIST$list "
        fi
    done
}
if [ -n "${NFSMTAB}" ];then
    CHECK_MOUNT
    if [ -z "${LIST}" ];then
            RESULT="$CHECKNAME OK - NFS BE MOUNTED PROPERLY"
            EXIT_STATUS=$STATE_OK
    else
            RESULT="$CHECKNAME WARNING - ${LIST} NOT BE MOUNTED"
            EXIT_STATUS=$STATE_WARNING
    fi
else
    RESULT="$CHECKNAME CRITICAL - ALL NFS NOT BE MOUNTED"
    EXIT_STATUS=$STATE_CRITICAL
fi
theend
有需要的朋友可以去下面的地址下载
下载check_nfsmount文件



来源:http://www.wenzizone.cn/?p=247
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-4-18 11:41 , Processed in 0.090984 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表