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