隨著信息技術(shù)的飛速發(fā)展,金融、財(cái)稅等企事業(yè)單位的信息化建設(shè)程度不斷加深。業(yè)務(wù)子系統(tǒng)的擴(kuò)展和集中,引發(fā)對(duì)大量主機(jī)、數(shù)據(jù)庫(kù)、應(yīng)用系統(tǒng)進(jìn)行綜合管理的需求:一方面,必須確保系統(tǒng)的正常運(yùn)行,對(duì)于大量工作人員的日常業(yè)務(wù)操作,首先要進(jìn)行必要的預(yù)警工作,及早發(fā)現(xiàn)問(wèn)題及消除隱患,其次一旦發(fā)生嚴(yán)重問(wèn)題,必須在第一時(shí)間報(bào)警并提供相關(guān)信息,使系統(tǒng)管理人員能以最快速度定位問(wèn)題并進(jìn)行相應(yīng)處理;另一方面,需要積累日常運(yùn)行維護(hù)經(jīng)驗(yàn)及數(shù)據(jù),為各種系統(tǒng)資源的綜合利用和規(guī)劃提供決策支持。基于Web的服務(wù)器集群綜合監(jiān)控系統(tǒng)能夠滿足上述需求,通過(guò)該系統(tǒng)可以解決實(shí)時(shí)監(jiān)控、有效管理、資源合理利用等問(wèn)題,有助于系統(tǒng)管理員做好日常管理和運(yùn)行維護(hù)工作。
1、系統(tǒng)架構(gòu)設(shè)計(jì)
1.1基礎(chǔ)信息采集層
系統(tǒng)主要架構(gòu)如圖1所示。信息采集是整個(gè)系統(tǒng)的基礎(chǔ),通過(guò)主動(dòng)和被動(dòng)方式將信息采集至監(jiān)控?cái)?shù)據(jù)庫(kù),針對(duì)不同的監(jiān)控需求,采集時(shí)間周期可分為分鐘級(jí)、小時(shí)級(jí)、天級(jí)。
在主機(jī)信息采集層面,定時(shí)采集主機(jī)的CPU、內(nèi)存、文件系統(tǒng)等資源的使用情況。通過(guò)主動(dòng)檢測(cè)程序,對(duì)主機(jī)進(jìn)行Ping和端口檢查。在數(shù)據(jù)庫(kù)信息采集層面,通過(guò)檢測(cè)程序,定時(shí)檢測(cè)數(shù)據(jù)庫(kù)的連通性、采集表空間、連接數(shù)、備份時(shí)間、各項(xiàng)命中率等標(biāo)準(zhǔn)指標(biāo)以及用戶自己定義的檢測(cè)指標(biāo)。
1.2邏輯分析判斷層
在底層采集大量信息的基礎(chǔ)之上,邏輯分析層負(fù)責(zé)對(duì)各項(xiàng)信息進(jìn)行分析處理。該層根據(jù)閾值信息表,判斷主機(jī)的CPU、內(nèi)存、文件系統(tǒng)、Ping、端口狀態(tài),以及數(shù)據(jù)庫(kù)的連通性、表空間、各項(xiàng)指標(biāo)狀態(tài),狀態(tài)主要分為:正常、警告、錯(cuò)誤。在實(shí)際使用中,會(huì)出現(xiàn)以下情況:例如在閾值信息表中,一般認(rèn)為文件系統(tǒng)占用率過(guò)高會(huì)發(fā)出警告,但有的主機(jī)管理員經(jīng)確認(rèn)后認(rèn)為此文件系統(tǒng)并不會(huì)對(duì)系統(tǒng)產(chǎn)生任何不良影響,為避免無(wú)用的警告信息干擾管理員,可使用屏蔽項(xiàng)目配置表對(duì)這些信息進(jìn)行屏蔽。當(dāng)對(duì)某一主機(jī)進(jìn)行重啟等維護(hù)時(shí),也可在屏蔽項(xiàng)目配置表對(duì)其進(jìn)行屏蔽,避免產(chǎn)生過(guò)多的報(bào)警信息。
1.3結(jié)果展現(xiàn)層
經(jīng)過(guò)邏輯分析層的處理,各項(xiàng)指標(biāo)的信息以及狀態(tài)已經(jīng)存放于數(shù)據(jù)庫(kù)中,展現(xiàn)層將這些結(jié)果通過(guò)頁(yè)面展示給用戶,主要功能有:
(1)信息展示。提供各項(xiàng)指標(biāo)的數(shù)據(jù)、狀態(tài)以及歷史信息和狀態(tài)的查詢。
(2)報(bào)警提醒。以不同顏色文字顯示提示警告、錯(cuò)誤等信息,例如警告信息以粉紅色顯示;錯(cuò)誤信息以大紅色顯示。彈出單獨(dú)的報(bào)警頁(yè)面至前臺(tái),同時(shí)發(fā)出警告聲音,以便管理員及時(shí)處理。
(3)月報(bào)功能。自動(dòng)生成各主機(jī)和數(shù)據(jù)庫(kù)的月報(bào)信息。
4)決策支持。通過(guò)適當(dāng)?shù)膱D形、表格、數(shù)值分析、統(tǒng)計(jì)分析等功能,為用戶提供決策支持。借助圖形化的CPU,內(nèi)存的日線、周線、月線,管理員可以分析服務(wù)器性能壓力,合理規(guī)劃配置資源。在數(shù)據(jù)庫(kù)層面,系統(tǒng)會(huì)根據(jù)近幾個(gè)月的表空間統(tǒng)計(jì)數(shù)據(jù),推算出各表空問(wèn)每月增長(zhǎng)量以及剩余空問(wèn)的可使用時(shí)間,使管理員能及時(shí)掌握表空間的使用情況并且進(jìn)行相應(yīng)處理,同時(shí)為存儲(chǔ)規(guī)劃提供依據(jù)。
2、系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)
2.1基礎(chǔ)信息采集層的實(shí)現(xiàn)
系統(tǒng)采用C齲言實(shí)現(xiàn)各層功能,基礎(chǔ)信息采集層主要?jiǎng)?chuàng)建5個(gè)類(lèi)支持主機(jī)信息采集過(guò)程:磁盤(pán)信息類(lèi)、網(wǎng)絡(luò)IP地址類(lèi)、網(wǎng)絡(luò)信息類(lèi)、進(jìn)程信息類(lèi)和系統(tǒng)信息類(lèi)。磁盤(pán)信息類(lèi)用于獲取磁盤(pán)名、總大小和可用空間;網(wǎng)絡(luò)IP地址類(lèi)用于獲得主機(jī)物理地址和IP地址;網(wǎng)絡(luò)信息類(lèi)用于獲取網(wǎng)卡名稱(chēng)、類(lèi)型、描述、最大速率、索引、接收字節(jié)、發(fā)送字節(jié)、連通狀態(tài)、MAC地址等;進(jìn)程信息類(lèi)用于獲取進(jìn)程號(hào)、進(jìn)程名、占用處理器時(shí)間、分配的物理內(nèi)存量以及進(jìn)程主要模塊的完整路徑;系統(tǒng)信息類(lèi)負(fù)責(zé)初始化CPU計(jì)數(shù)器,獲取CPU和內(nèi)存信息以及按要求獲取分區(qū)信息、進(jìn)程列表、IP地址、網(wǎng)絡(luò)信息、應(yīng)用程序標(biāo)題。
系統(tǒng)通過(guò)WMI(Windows Management Instrumentation,Windows管理規(guī)范)技術(shù)獲取本地或遠(yuǎn)程主機(jī)的相關(guān)信息。微軟在.NET平臺(tái)中充分支持WMI技術(shù),基于.NET Framework托管平臺(tái)的WMI.NET技術(shù)封裝了原始WMI細(xì)節(jié),并提供統(tǒng)一的WMI對(duì)象屬性讀取、方法調(diào)用途徑。開(kāi)發(fā)時(shí)首先引入System.Management命名空間,此命名空間提供的類(lèi)為訪問(wèn)各種管理對(duì)象提供面向?qū)ο蟮木幊探涌冢褂迷撁臻g可以查詢系統(tǒng)資源信息。本系統(tǒng)主要使用ManagementObject、ManagementClass、ManagementObjectSearcher、ManagementObjectCollection類(lèi)對(duì)象,以下為利用上述對(duì)象完成的系統(tǒng)信息類(lèi)初始化代碼。
//初始化CPU計(jì)數(shù)器
PerformanceCounter pcCpuLOAd=new PerformaneeCounter(“Processor”,”%Processor Time”,”_Total”);
peCpuLoad.MaehineName=“.”;
pcCpuLoad.NextValue();
//獲取CPU個(gè)數(shù)
m_ProcessorCount=Environment.ProcessorCount;
//獲取物理內(nèi)存
ManagementClass mc=new ManagementClass(“Win32_ComputerSystem”);
ManagementObjeetCollection moc=mc.Getlnstances();
foreach(ManagementObject mo in moc){
if(mo[“TotalPhysicalMemory”]!=null)
{m_PhysicalMemory=long.Parse(mo[I.TotalPhysiealMemory”].ToString());}
主機(jī)信息采集過(guò)程通過(guò)設(shè)置計(jì)時(shí)器定時(shí)觸發(fā)執(zhí)行,基于采集數(shù)據(jù)構(gòu)造SQL插入語(yǔ)句,該語(yǔ)句存放在批處理文件中,通過(guò)FTP上傳至數(shù)據(jù)庫(kù)并設(shè)置為自動(dòng)運(yùn)行。上傳SQL語(yǔ)句的功能代碼使用ProcessStartlnfo和Process類(lèi)實(shí)現(xiàn),ProcessStartlnfo類(lèi)包含用于啟動(dòng)進(jìn)程的信息,Process類(lèi)負(fù)責(zé)啟動(dòng)本地系統(tǒng)進(jìn)程。
//聲明一個(gè)程序信息
System.Diagnostics.ProeessStardnfo Info=new System.Diagnostics.ProcessStarInfo();
//設(shè)置外部程序名
Info.FileName=spath+”toftp.bat”;
Info.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;
//聲明一個(gè)程序類(lèi)
System.Diagnostics.Process Proc;
//啟動(dòng)外部程序
Proc=System.Diagnostics.Process.Star(Info);
2.2分析判斷層的實(shí)現(xiàn)
采集數(shù)據(jù)匯總到監(jiān)控?cái)?shù)據(jù)庫(kù)后,由分析判斷層完成分析判斷工作。該層對(duì)各項(xiàng)信息的處理過(guò)程主要分為3個(gè)步驟:獲取基本數(shù)據(jù)、執(zhí)行分析判斷、更新?tīng)顟B(tài)信息。以主機(jī)端口狀態(tài)的分析為例,以下代碼完成基于端口基本配置表數(shù)據(jù)進(jìn)行端口狀態(tài)的分析判斷,并將分析結(jié)果保存至端口狀態(tài)記錄表的過(guò)程,其中Public和DataAccess為自定義類(lèi),分別提供獲取主機(jī)動(dòng)態(tài)信息和執(zhí)行數(shù)據(jù)庫(kù)查詢、更新的公用方法。
//獲取端口基本配置表中指定主機(jī)的端口數(shù)據(jù)
PingReply reply=Public.ToPing(sIP);
string serid=Public.GetSerlD();
dtPort=DataAccess.GetDataTable(String.Format(“select *from cortfig_port where ip=‘{0}’and isvalid=‘Y”‘,sIP));
foreach(DataRow drPort in dtPort.Rows)
{
int port=Int32.Parse(drPort[“port”].ToString());
if(reply.Status==IPStatus.Success&&Public.Scan(sIP,port))
{status=“0”;}
else
{status=“1”;}
//使用主機(jī)IP地址、主機(jī)名、系統(tǒng)當(dāng)前時(shí)間、端口狀態(tài)
//等信息構(gòu)建向端口狀態(tài)表新增一條記錄的SQL語(yǔ)句
sql=String.Format(@”insert into log_port(id,ip,name,logtime,port,status,serid)values(seq—id.nextval,’{0}’,’{1}’,to_date(‘{2}’,’YYYY—mm—dd H24:mi’),{3},’{4}’,’{5}’)”,siP,sName,DateTime.Now.ToString(“yyyy—MM—dd H:mm”),port,status,serid);
//執(zhí)行新增語(yǔ)句
DataAccess.ExecuteNonQuery(sql);
}
2.3結(jié)果展示層的實(shí)現(xiàn)
結(jié)果展示層使用.NET創(chuàng)建Web應(yīng)用程序,以網(wǎng)頁(yè)形式呈現(xiàn)功能界面。系統(tǒng)管理員可以查看各集群總體狀態(tài)以及監(jiān)控服務(wù)器主機(jī)性能和數(shù)據(jù)庫(kù)狀態(tài),圖2為集群服務(wù)器狀態(tài)查看頁(yè)面。
本系統(tǒng)結(jié)合ASP.NET與JavaScript技術(shù)實(shí)現(xiàn)信息展示功能。在應(yīng)用服務(wù)器端,采用IIS作為發(fā)布平臺(tái),用于ASP.NET頁(yè)面的解釋和Web目錄的發(fā)布。
由于頁(yè)面需每隔3分鐘從后臺(tái)數(shù)據(jù)庫(kù)獲取集群狀態(tài)信息,因此使用3個(gè)ASP.NET Ajax控件:ScriptManager、UpdatePanel、Timer實(shí)現(xiàn)頁(yè)面的定時(shí)無(wú)刷新顯示。
狀態(tài)信息的顯示形式既有DataList復(fù)雜數(shù)據(jù)控件,也有Label簡(jiǎn)單控件。對(duì)于顯示各服務(wù)器狀態(tài)的DataList控件,通過(guò)設(shè)置其DataSource屬性和DataBind()方法綁定系統(tǒng)數(shù)據(jù)庫(kù)的狀態(tài)數(shù)據(jù)。對(duì)于顯示集群綜合狀態(tài)的Label控件,直接將數(shù)據(jù)綁定至控件的Text屬性,其代碼主要如下所示:
//調(diào)用自定義類(lèi)的查詢方法獲取指定集群狀態(tài)信息
DataRow r=INF_GROUP.SelectDetail(this.Request[“groupid”].ToString());
//將數(shù)據(jù)綁定到頁(yè)面控件上
this.txbGROUPNAME.Text=r[“GROUPNAME”].ToString();
this.txbDESCRIBE.Text=r[“DESCRIBE”].ToString();
this.txbGROUPLOGTIME.Text=““LOGTIME”].ToString();
this.txbGROUPZT_DM.Text=r[“ZT_MC”].ToString();
this.txbGROUPBZ.Text=r[“BZ”].ToString();
//根據(jù)集群狀態(tài)設(shè)置文字顏色
this.txbGROUPZT_DM.ForeColor=Framework.Web.StyleCommon.StatusColor[Int32.Parse(r[“ZT_DM”].ToString())];
this.txbGROUPBZ.ForeColor=Framework.Web.StyleCom_moll.StatusColor[Int32.Parse(r[“ZT_DM”].ToString())];
//設(shè)置查詢歷史記錄超鏈接
this.groupid=r[“groupid”].ToString();
this.HyperLinkGROUP.NavigateUrl=String.Format f”javascript:navigate(‘../LOG_GROUP/P_LOG_GROUPDataGrid.aspx?groupid={0}’,’查看歷史記錄’)”,this.Request[“groupid”].ToString());
3、系統(tǒng)應(yīng)用效果分析
3.1監(jiān)控效果
系統(tǒng)監(jiān)控結(jié)果顯示,當(dāng)服務(wù)器狀態(tài)發(fā)生波動(dòng)時(shí),管理員能在第一時(shí)間得到報(bào)警提示,報(bào)警信息主要分為以下6類(lèi):
(1)CPU占用過(guò)高引起的報(bào)警。該類(lèi)信息為最常見(jiàn)的報(bào)警信息,當(dāng)CPU占用率超過(guò)閾值時(shí),自動(dòng)彈出報(bào)警頁(yè)面,大多數(shù)情況下該問(wèn)題由數(shù)據(jù)庫(kù)查詢占用大量CPU資源引起,管理員可根據(jù)報(bào)警信息及時(shí)做進(jìn)一步分析。
(2)文件系統(tǒng)占用過(guò)高引起的報(bào)警。此類(lèi)報(bào)警信息節(jié)省管理員逐集群逐主機(jī)逐目錄的巡查時(shí)間?管理員及時(shí)處理問(wèn)題,防止數(shù)據(jù)庫(kù)歸檔、數(shù)據(jù)庫(kù)實(shí)例目錄、應(yīng)用系統(tǒng)目錄等空間不足而導(dǎo)致系統(tǒng)掛起。
(3)數(shù)據(jù)庫(kù)表空間占用過(guò)高引起的報(bào)警。目前很多系統(tǒng)使用了裸設(shè)備,表空間不會(huì)自動(dòng)擴(kuò)展,管理員需結(jié)合空間使用的預(yù)測(cè)功能,適時(shí)對(duì)表空間進(jìn)行擴(kuò)容。
(4)主機(jī)無(wú)法連接引起的報(bào)警。發(fā)生概率較小但影響非常嚴(yán)重,原因可能為主機(jī)故障或網(wǎng)絡(luò)故障。監(jiān)控系統(tǒng)定時(shí)對(duì)所有主機(jī)進(jìn)行Ping巡查,為防止網(wǎng)絡(luò)一時(shí)不穩(wěn)定引起的誤報(bào),系統(tǒng)會(huì)在第一次Ping失敗時(shí)發(fā)起第二次檢查,以保證結(jié)果的有效性。
(5)應(yīng)用系統(tǒng)故障引起的報(bào)警。監(jiān)控系統(tǒng)通過(guò)對(duì)特定端口的檢測(cè)確定應(yīng)用系統(tǒng)的狀態(tài),當(dāng)某一應(yīng)用實(shí)例發(fā)生故障時(shí),相關(guān)端口檢測(cè)失敗進(jìn)而引發(fā)報(bào)警。
(6)RAC數(shù)據(jù)庫(kù)故障引起的報(bào)警。有的系統(tǒng)進(jìn)行主機(jī)雙機(jī)熱備,數(shù)據(jù)庫(kù)采用RAC模式。當(dāng)一臺(tái)主機(jī)發(fā)生故障時(shí),其地址和服務(wù)自動(dòng)漂移至另一主機(jī),對(duì)外仍可正常提供服務(wù),用戶無(wú)法感知主機(jī)已發(fā)生故障,普通的Ping檢測(cè)也能正常通過(guò),但通過(guò)對(duì)數(shù)據(jù)庫(kù)的連通性檢查可發(fā)現(xiàn)異常。主機(jī)發(fā)生漂移時(shí),雖然失效主機(jī)的數(shù)據(jù)庫(kù)服務(wù)名仍可正常訪問(wèn),但對(duì)其SID的訪問(wèn)已經(jīng)失效,從而引發(fā)報(bào)警。
3.2簡(jiǎn)化日常管理
以往查詢主機(jī)和數(shù)據(jù)庫(kù)信息需要很多復(fù)雜的操作,現(xiàn)在普通管理人員通過(guò)一個(gè)頁(yè)面就可以方便快捷地看到關(guān)鍵點(diǎn)信息。由于采用B/S結(jié)構(gòu),任何管理用戶只需在任意一臺(tái)連接內(nèi)網(wǎng)的計(jì)算機(jī)上打開(kāi)瀏覽器即可進(jìn)行監(jiān)控,數(shù)據(jù)均在監(jiān)控系統(tǒng)的數(shù)據(jù)庫(kù)中,增加瀏覽客戶端不會(huì)對(duì)受監(jiān)控目標(biāo)主機(jī)增加任何負(fù)擔(dān)。
由于大部分日常監(jiān)控工作均可自動(dòng)完成,系統(tǒng)管理員的工作量大幅減少。對(duì)于日常運(yùn)維過(guò)程中出現(xiàn)的問(wèn)題,系統(tǒng)通過(guò)監(jiān)控頁(yè)面自動(dòng)彈出報(bào)警頁(yè)面,從而實(shí)現(xiàn)一個(gè)管理員同時(shí)管理幾個(gè)集群幾十臺(tái)服務(wù)器。與此同時(shí)可以將管理員處理問(wèn)題的歷史經(jīng)驗(yàn)加入知識(shí)庫(kù)中,為相關(guān)問(wèn)題的解決提供借鑒。
3.3提供決策支持
主機(jī)CPU、內(nèi)存運(yùn)行隋況的詳細(xì)記錄為各分區(qū)資源合理調(diào)配提供定量分析依據(jù)。通過(guò)本系統(tǒng),在保證服務(wù)器穩(wěn)定運(yùn)行的前提下,可以實(shí)現(xiàn)資源的最大化利用。
例如管理員可以通過(guò)圖3、圖4的2條CPU曲線進(jìn)行如下分析:全月性能平穩(wěn),主要壓力集中于工作時(shí)間,為正常業(yè)務(wù)壓力,CPU負(fù)荷基本不超過(guò)75%。此主機(jī)配置為12CPU,目前性能良好,短期不需要增加配置。實(shí)施統(tǒng)籌資源配置時(shí),可參考月線和日線進(jìn)行規(guī)劃,在其他分區(qū)資源緊缺情況下,甚至可以考慮從此分區(qū)劃撥資源。
根據(jù)已有分區(qū)的CPU、內(nèi)存歷史曲線,分析其歷史峰值及空閑資源,為主機(jī)分區(qū)擴(kuò)容所需的分區(qū)規(guī)劃和資源調(diào)配提供定量依據(jù)。當(dāng)新上一個(gè)系統(tǒng)時(shí),根據(jù)圖形化的運(yùn)行狀態(tài),從主機(jī)層面推斷系統(tǒng)是否步入穩(wěn)定運(yùn)行期。通過(guò)數(shù)據(jù)庫(kù)空間的預(yù)測(cè)功能,對(duì)各表空間的分配進(jìn)行合理規(guī)劃,并為長(zhǎng)期存儲(chǔ)規(guī)劃提供依據(jù)。
4、結(jié)束語(yǔ)
本系統(tǒng)滿足大型企事業(yè)對(duì)于大規(guī)模服務(wù)器數(shù)據(jù)的采集分析、預(yù)警及決策支持的需求。實(shí)際應(yīng)用結(jié)果表明,系統(tǒng)管理員可以監(jiān)控多個(gè)集群的大量數(shù)據(jù)庫(kù)、主機(jī)、服務(wù)器的信息,靈活配置各種指標(biāo),查看綜合信息,實(shí)現(xiàn)人力、物力和時(shí)間的節(jié)省,極大提高管理效率。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.vmgcyvh.cn/
本文標(biāo)題:服務(wù)器集群綜合監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
本文網(wǎng)址:http://www.vmgcyvh.cn/html/consultation/10839711657.html