NFS掛載腳本的代碼實現
今天們主要講解一下NFS掛載腳本的內容。這個在監(jiān)控系統(tǒng)中是常見的問題。那么具體的nagios監(jiān)控腳本是監(jiān)控NFS是否被掛載上的腳本信息,讓們從下文來了解一下吧。先說下寫這個NFS掛載腳本的初衷吧,事情還是因為上次網絡部調整服務器機柜位置引起的,當時自信滿滿的認為服務器上已經配置好了自動掛載NFS,所以根本不用擔心NFS掛載腳本的情況,當服務器啟動恢復后,的nagios給發(fā)了一個recovery的郵件,就想當然的認為好了,也就沒管。第二天開發(fā)人員居然找到,問昨天是不是有兩臺機器重啟了,說是呀,他們就說NFS沒有掛載上,當時還很強調說不可能呢,結果手動重啟了一下昨天的機器,發(fā)現真的沒有自動掛載上,讓很是郁悶。
沒有自動掛載到還不是讓人最郁悶,那個已經通過技術問題解決了,郁悶的是有了問題居然不是nagios***時間通知。由于之前使用的是nagios的check_disk這個腳本,在NFS磁盤有問題,不可讀寫或空間不足的時候給報過警,但經過測試發(fā)現,這個腳本只能監(jiān)控本地磁盤(包括掛載好的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下,并賦予可執(zhí)行權限
3,配置nrpe配置文件,添加相應的command
4,nagios監(jiān)控機上添加相應的服務
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掛載腳本中還沒有考慮到的還希望各位指出。















 
 
 
 
 
 
 