一種批量監(jiān)控Linux服務(wù)器運(yùn)行狀態(tài)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及Linux服務(wù)器監(jiān)控技術(shù)領(lǐng)域,具體涉及一種批量監(jiān)控Linux服務(wù)器運(yùn)行狀態(tài)的方法,通過(guò)在網(wǎng)絡(luò)中一臺(tái)監(jiān)控節(jié)點(diǎn)上部署監(jiān)控腳本,定時(shí)獲取網(wǎng)絡(luò)上其它服務(wù)器的運(yùn)行狀態(tài),并將結(jié)果保存到本監(jiān)控節(jié)點(diǎn)上。當(dāng)有服務(wù)器發(fā)生宕機(jī)或其它異常情況時(shí),監(jiān)控節(jié)點(diǎn)就會(huì)檢測(cè)到錯(cuò)誤,同時(shí)生成錯(cuò)誤日志并保存到每臺(tái)服務(wù)器對(duì)應(yīng)的監(jiān)控日志中,實(shí)現(xiàn)批量對(duì)服務(wù)器的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控的目的。
【背景技術(shù)】
[0002]隨著服務(wù)器技術(shù)的不斷發(fā)展,企業(yè)機(jī)房中的服務(wù)器數(shù)量變得越來(lái)越多,在滿足廣大企業(yè)日益增長(zhǎng)的計(jì)算機(jī)存儲(chǔ)需求的同時(shí),也使得我們監(jiān)控服務(wù)器運(yùn)行狀態(tài)的工作變得越來(lái)越繁瑣。通常情況下,如果服務(wù)器配置了管理卡,出現(xiàn)硬件故障時(shí)可能會(huì)有告警,及時(shí)通知運(yùn)維人員處理故障。但是,如果服務(wù)器直接宕機(jī)或者系統(tǒng)資源占用過(guò)多,此時(shí)管理卡一般不會(huì)檢測(cè)到告警,但是這將直接影響到業(yè)務(wù)運(yùn)行,只有運(yùn)維人員發(fā)現(xiàn)業(yè)務(wù)無(wú)法使用或運(yùn)行緩慢后才會(huì)引起注意,而且難以判斷發(fā)生故障的時(shí)間。另外,對(duì)機(jī)房大量服務(wù)器逐臺(tái)檢查也會(huì)消耗過(guò)多的人力和時(shí)間成本。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問(wèn)題是:為了解決上述問(wèn)題,提供一種批量監(jiān)控Linux服務(wù)器運(yùn)行狀態(tài)的方法。
[0004]本發(fā)明所采用的技術(shù)方案為:
一種批量監(jiān)控Linux服務(wù)器運(yùn)行狀態(tài)的方法,所述方法通過(guò)在網(wǎng)絡(luò)中一臺(tái)監(jiān)控節(jié)點(diǎn)上部署監(jiān)控腳本,定時(shí)獲取網(wǎng)絡(luò)上其它服務(wù)器的運(yùn)行狀態(tài),并將結(jié)果保存到本監(jiān)控節(jié)點(diǎn)上;當(dāng)有服務(wù)器發(fā)生宕機(jī)或其它異常情況時(shí),監(jiān)控節(jié)點(diǎn)就會(huì)檢測(cè)到錯(cuò)誤,同時(shí)生成錯(cuò)誤日志并保存到每臺(tái)服務(wù)器對(duì)應(yīng)的監(jiān)控日志中,實(shí)現(xiàn)批量對(duì)服務(wù)器的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控。
[0005]所述方法涉及的程序包括:1)批量掃描器scan,sh、2)狀態(tài)獲取及判斷機(jī)制get_state.sh,其中:
1)批量掃描器scan,sh:使用Shell腳本編寫,允許自定義被掃描的IP地址段范圍及掃描間隔,在計(jì)劃掃描的時(shí)間到來(lái)后,會(huì)批量在每臺(tái)被監(jiān)控服務(wù)器上調(diào)用狀態(tài)獲取及判斷機(jī)制,并將返回值傳回到監(jiān)控節(jié)點(diǎn)上;
2)狀態(tài)獲取及判斷機(jī)制get_state.sh:通過(guò)Linux系統(tǒng)管理命令獲取服務(wù)器的運(yùn)行狀態(tài),同時(shí)對(duì)服務(wù)器的存活狀態(tài)做出判斷,將結(jié)果記錄到監(jiān)控日志中,每臺(tái)被監(jiān)控服務(wù)器都有一個(gè)獨(dú)立的日志文件。
[0006]所述方法實(shí)現(xiàn)步驟如下:
1)在監(jiān)控節(jié)點(diǎn)上部署scan.sh和get_state.sh,復(fù)制腳本文件至任意目錄,要求這兩個(gè)腳本位于同一目錄下;
2)創(chuàng)建ip.txt文件,里面填寫好所有服務(wù)器的IP地址,每行一個(gè); 3)修改掃描時(shí)間間隔,單位是秒;
4)賦予腳本文件可執(zhí)行權(quán)限,執(zhí)行腳本;
5)監(jiān)控過(guò)程與結(jié)果分析。
[0007]所述監(jiān)控過(guò)程與結(jié)果分析操作步驟如下:
1)scan.sh用于創(chuàng)建后臺(tái)監(jiān)控進(jìn)程,根據(jù)掃描列表中定義的IP地址段遠(yuǎn)程連接到每臺(tái)被監(jiān)控的服務(wù)器上,同時(shí)將get_state腳本復(fù)制到遠(yuǎn)程服務(wù)器上獲取最新?tīng)顟B(tài),最后負(fù)責(zé)將數(shù)據(jù)傳回監(jiān)控節(jié)點(diǎn);
2)get_State.sh用于獲取服務(wù)器的運(yùn)行狀態(tài),同時(shí)對(duì)服務(wù)器的存活狀態(tài)做出判斷,將結(jié)果記錄到監(jiān)控日志中,日志文件以主機(jī)名結(jié)尾;
日志文件詳細(xì)記錄了此臺(tái)服務(wù)器的運(yùn)行狀態(tài),包括服務(wù)器當(dāng)前存活狀態(tài)、已運(yùn)行時(shí)間、各資源占用率以及關(guān)機(jī)或重啟記錄;
3)通過(guò)查看日志中的存活標(biāo)記及日志記錄時(shí)間,確認(rèn)服務(wù)器有無(wú)發(fā)生宕機(jī)問(wèn)題;
4)最后,對(duì)有問(wèn)題的服務(wù)器進(jìn)行維護(hù)。
[0008]本發(fā)明的有益效果為:
本發(fā)明提出的基于Shell腳本的實(shí)時(shí)監(jiān)控方法,將會(huì)在監(jiān)控節(jié)點(diǎn)上部署批量掃描器,不會(huì)占用被監(jiān)控服務(wù)器的系統(tǒng)資源。同時(shí)將所有服務(wù)器的運(yùn)行狀態(tài)數(shù)據(jù)統(tǒng)一輸送到監(jiān)控節(jié)點(diǎn)上,十分方便運(yùn)維人員主動(dòng)維護(hù)。而且,當(dāng)服務(wù)器狀態(tài)異常后,運(yùn)維人員還可以從日志中輕易確定故障發(fā)生的時(shí)間,非常實(shí)用。本方法無(wú)需安裝第三方軟件,簡(jiǎn)單易用。批量掃描器使用Shell腳本編寫,通用性強(qiáng),可跨平臺(tái)使用。另外,可以自定義掃描范圍及掃描間隔,適應(yīng)不同的監(jiān)控環(huán)境。同時(shí)支持后臺(tái)監(jiān)控,無(wú)需人為干預(yù)。
【附圖說(shuō)明】
[0009]圖1為本發(fā)明方法流程圖。
【具體實(shí)施方式】
[0010]下面根據(jù)說(shuō)明書附圖,結(jié)合【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說(shuō)明:
實(shí)施例1:
一種批量監(jiān)控Linux服務(wù)器運(yùn)行狀態(tài)的方法,所述方法通過(guò)在網(wǎng)絡(luò)中一臺(tái)監(jiān)控節(jié)點(diǎn)上部署監(jiān)控腳本,定時(shí)獲取網(wǎng)絡(luò)上其它服務(wù)器的運(yùn)行狀態(tài),并將結(jié)果保存到本監(jiān)控節(jié)點(diǎn)上;當(dāng)有服務(wù)器發(fā)生宕機(jī)或其它異常情況時(shí),監(jiān)控節(jié)點(diǎn)就會(huì)檢測(cè)到錯(cuò)誤,同時(shí)生成錯(cuò)誤日志并保存到每臺(tái)服務(wù)器對(duì)應(yīng)的監(jiān)控日志中,實(shí)現(xiàn)批量對(duì)服務(wù)器的運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控。
[0011]實(shí)施例2:
在實(shí)施例1的基礎(chǔ)上,本實(shí)施例所述方法涉及的程序包括:1)批量掃描器scan, sh、2)狀態(tài)獲取及判斷機(jī)制get_state.sh,其中:
1)批量掃描器scan,sh:使用Shell腳本編寫,允許自定義被掃描的IP地址段范圍及掃描間隔,在計(jì)劃掃描的時(shí)間到來(lái)后,會(huì)批量在每臺(tái)被監(jiān)控服務(wù)器上調(diào)用狀態(tài)獲取及判斷機(jī)制,并將返回值傳回到監(jiān)控節(jié)點(diǎn)上;
2)狀態(tài)獲取及判斷機(jī)制get_state.sh:通過(guò)Linux系統(tǒng)管理命令獲取服務(wù)器的運(yùn)行狀態(tài),同時(shí)對(duì)服務(wù)器的存活狀態(tài)做出判斷,將結(jié)果記錄到監(jiān)控日志中,每臺(tái)被監(jiān)控服務(wù)器都有一個(gè)獨(dú)立的日志文件。
[0012]其中:scan.sh程序:
#! /bin/bash
while [ true ]do
for i in cat ip.txtdo
scp get_state.sh root@$1:/root
ssh root@$i 〃chmod 777 get_state.sh;./get_state.sh〃
scp root@$1:/root/stated Logs
done
sleep 3600done
說(shuō)明1:程序調(diào)用的ip.txt文件可以自行創(chuàng)建,里面填寫好所有服務(wù)器的IP地址,每行—個(gè);
說(shuō)明2:sleep 3600部分為掃描間隔,單位是秒,默認(rèn)1小時(shí)掃描一次,可修改。
[0013]get—state.sh程序:
#! /bin/bash
echo 1-===================Server is live====================” >> state—$
H0STNAME.log
uptime >> statejH0STNAME.logfree >> statejH0STNAME.logdf -Th ? statejH0STNAME.log1stat -m >> statejH0STNAME.loglast reboot >> statejH0STNAME.log實(shí)施例3:
如圖1所示,在實(shí)施例2的基礎(chǔ)上,本實(shí)施例所述方法實(shí)現(xiàn)步驟如下:
1)在監(jiān)控節(jié)點(diǎn)上部署scan.sh和get—state.sh,復(fù)制腳本文件至任意目錄,比如/root目錄等,但要求這兩個(gè)腳本位于同一目錄下;
2)創(chuàng)建ip.txt文件,里面填寫好所有服務(wù)器的IP地址,每行一個(gè);例如:
10.7.18.1
10.7.18.2
10.7.18.3
3)修改掃描時(shí)間間隔,單位是秒,默認(rèn)1小時(shí)掃描一次; sleep 3600
4)賦予腳本文件可執(zhí)行權(quán)限,執(zhí)行腳本;
#chmod 777 scan.sh get_state.sh
#./scan.sh & 5)監(jiān)控過(guò)程與結(jié)果分析。
[0014] 實(shí)施例4:
在實(shí)施例3的基礎(chǔ)上,本實(shí)施例所述監(jiān)控過(guò)程與結(jié)果分析操作步驟如下:
1)scan.sh用于創(chuàng)建后臺(tái)監(jiān)控進(jìn)程,根據(jù)掃描列表中定義的IP地址段遠(yuǎn)程連接到每臺(tái)被監(jiān)控的服務(wù)器上,同時(shí)將get_state腳本復(fù)制到遠(yuǎn)程服務(wù)器上獲取最新?tīng)顟B(tài),