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