nagios监控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 devptsgid=5,mode=6200 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
对于脚本中还没有考虑到的还希望各位指出。
在这几天使用过程中还是发现了一些小问题。如果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
页:
[1]