今天们主要讲解一下NFS挂载脚本的内容。这个在监控系统中是常见的问题。那么具体的nagios监控脚本是监控NFS是否被挂载上的脚本信息,让们从下文来了解一下吧。先说下写这个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 / ext3defaults,usrquota,grpquota1 1
LABEL=/boot /boot ext3defaults1 2
tmpfs /dev/shmtmpfs defaults0 0
devpts /dev/ptsdevpts gid=5,mode=620 0 0
sysfs /syssysfs defaults0 0
proc/proc procdefaults0 0
/dev/VolGroup00/LogVol01 swapswapdefaults0 0
192.168.211.129:/home/tst /data/tst nfs defaults0 0
192.168.211.129:/home/tst02 /data/tst02 nfs defaults0 0
192.168.211.129:/home/tst03 /data/tst03 nfs defaults0 0
2,将脚本nagios安装目录的libexec下,并赋予可执行权限
3,配置nrpe配置文件,添加相应的command
4,nagios监控机上添加相应的服务
NFS挂载脚本内容:
- #!/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挂载脚本中还没有考虑到的还希望各位指出。