NFS掛載腳本的代碼實現
今天們主要講解一下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掛載腳本中還沒有考慮到的還希望各位指出。