#!/bin/bash
for PID in `ps -ef | grep -v grep | grep nagios | awk '{print $2}'`
do
echo “PID : $PID”
kill -9 $PID
done
然後再重啟Nagios服務:
service nagios restart
就不再看到產生那些錯誤提示了.
(22)“CHECK_NRPE: Error – Could not complete SSL handshake” 錯誤:
此問題大概有兩個原因:
A)/etc/xinetd.d/nrpe 文件中要添加允許訪問的服務器的IP地址,你沒有添加.在“only_from = ”這一行添加,多個IP地址用空格隔開,例如:
only_from = 192.168.56.200 192.168.6.8
然後重啟服務:
service xinetd restart
Are you sure that IP Virtual Server is built in the kernel or as module?
真折騰,怎麼解決?經試驗,把nagios用戶加入root組也無濟於事,問題依舊.
辦法是:將nagios用戶設置成可以無需密碼直接su成root,這樣就能以nagios用戶運行命令sudo /usr/local/nagios/libexec/check_lvs 了,有了這個基礎,我們就可以自己編寫一個名為check_lvs_nagios的腳本,然後在裡面只寫上一句話:
sudo /usr/local/nagios/libexec/check_lvs
此時,你切換到nagios用戶(su nagios),再運行check_lvs_nagios,應該就可以輸出正確的結果了.
這就完了嗎?還是沒完!!千萬別砸我,事情就要說清楚前因後果.你在Nagios監控服務器端通過NRPE運行check_lvs_nagios命令,你會發現根本無法讀取輸出:
/usr/local/nagios/libexec/check_nrpe -H 192.168.XXX.XXX -c check_lvs_nagios
輸出結果為:
NRPE: Unable to read output
而這個check_lvs_nagios命令,確信是在被監控服務器上的NRPE配置文件(/usr/local/nagios/etc/nrpe.cfg)中添加過了的(並且還重啟了xinetd服務 service xinetd restart):
command[check_lvs_nagios]=/usr/local/nagios/libexec/check_lvs_nagios
於是,我不得不說,使用這個插件的成本太高,不僅需要安裝的東西多,配置麻煩,而且到最後還是無法在只進行少量配置修改的情況下使之運行起來,因此,我轉而自己寫一個插件check_lvs(用shell寫的),比它簡單多了.請試驗運行下面這段簡單的shell:
#!/bin/bash
ACT_COUNT=0
for NUM in `sudo ipvsadm | grep http | grep Route | awk '{print $5}'`
do
ACT_COUNT=$(($ACT_COUNT+ $NUM))
done
echo $ACT_COUNT
這段shell統計了LVS服務統計信息中的“ActiveConn”的值,通過這個值,你就可以判斷出LVS服務是否正常了.當然,上面的shell代碼段並不是一個Nagios插件(因為其並沒有按Nagios系統的要求返回正確的值),但是你只要自己根據阈值來判斷是否正常、並返回相應的值就可以將它改造成一個插件了.
另外請注意:
①這段shell中有用sudo來運行ipvsadm命令,因此你還是需要像上面的內容中所說的一樣,為nagios用戶添加可以無密碼su到root的權限(方法請看這個鏈接的第25條內容).然後你就可以用nagios用戶來運行這個腳本了.
②sudo命令默認不能在後台運行,要開放這個權限,同樣請看這個鏈接的第25條內容.