專利名稱:一種監控服務器及監控方法
技術領域:
本發明涉及網絡監控技術,尤其涉及一種監控服務器及監控方法。
背景技術:
在信息技術(IT)運營管理過程中,需要服務器對主機、主機上應用和網 絡設備進行監控。目前,對于網絡設備的監控,普遍釆用簡單網絡管理協議 (SNMP, Simple Network Management Protocol),而對于主機及主機上應用的 監控,各個廠商在軟件的實現上卻出現了分歧,有些廠商釆用代理(Agent)監 控方式,有些廠商釆用非代理(Agentless)監控方式。
Agent監控方式,就是在被監控主機或被監控應用所在的主機上面,安裝 小的Agent軟件,通過代理軟件實現對數據的釆集和管理,從而實現對主機及 主機上應用的監控。目前采用Agent監控方式的監控軟件主要有Hyperic、 IBM Tivoli、 BMC Patrol 、 Nagios等。
Agent監控方式具有以下優點首先,由于大部分工作通過監控資源端, 即被監控主機或被監控應用所在的主機上的Agent軟件完成,Agent監控方式 對監控服務器的影響相對較小;其次,在監控資源端釆集的數據可以經過壓縮 處理后,再傳輸給監控服務器,所以Agent監控方式對網絡帶寬的占用較少, 適用于有限帶寬的網絡環境;再次,Agent監控方式支持二次開發。但是,Agent 監控方式需要占用 一定的CPU和內存來運行Agent軟件本身;并且,每個Agent 軟件獨立運行,掃描、配置較為繁瑣,且每臺主機都需要部署安裝,部署起來 相對很麻煩。
Agentless監控方式,不需要在被監控主機或被監控應用所在的主機上面安 裝代理軟件來釆集相應的數據,而是由監控服務器通過一些標準的協議,如主機使用的SNMP、遠程登錄協議(Telnet)、安全外殼協議(SSH)、 Windows管 理規范(WMI)等,以及應用使用的Java管理擴展(JMX)、 Java數據庫連接 (JDBC)、開放數據庫互連(ODBC)等,釆集監控資源端的數據。目前,采 用Agentless方式的監控軟件主要有Cacti、網絡鏈路流量負載(Multi Router Traffic Grapher, MRTG)、 Zenoss、 AdventNet、 OpenNMS等,其中,Zenoss和 OpenNMS支持分布式操作。
Agentless監控方式具有以下優點監控服務器負責所有的掃描、配置,只 需要向被監控主機或被監控應用所在的主機開通相應的協議和端口,就可以實 現監控,所以,Agentless監控方式對CPU和內存的影響相比Agent方式小很多, 且不需要對監控資源端進行部署。但是,由于所有工作通過監控服務器遠程連 接監控資源端實現,Agentless監控方式對監控服務器的影響相對較大;并且, 監控資源端釆集的數據直接傳輸給監控服務器,數據傳輸量較大,需要占用較 多的網絡帶寬;另外,在Agentless監控方式中,監控指標相對固定,不支持二 次開發。
從上述描述可以看出,釆用Agent監控方式和Agentless監控方式的監控軟 件各有優缺點,隨著用戶對監控業務的要求越來越高,單純的釆用某一種監控 軟件已不能很好地滿足用戶監控的需求,而通過多種監控軟件釆集的數據進行 監控,往往會因為數據格式不同、分布不同等原因,無法進行綜合分析,從而 無法滿足監控需求;另外,同樣的功能,在不同的監控軟件中必須對應獨立的 功能模塊,所以,現有監控軟件中模塊的重用性較差。
發明內容
有鑒于此,本發明的主要目的在于提供一種監控服務器及監控方法,能夠 靈活集成多種監控軟件進行更有效地監控,且能提高模塊的重用性,節省代碼 及系統資源。
為達到上述目的,本發明的技術方案是這樣實現的 一種監控服務器,包括應用層、服務層、組件層和數據層;其中,所述應用層,用于與用戶進行交互,根據用戶的操作指令,將監控請求傳
遞至服務層;還用于對來自服務層的監控數據進行展示;
所述服務層,用于存儲各種服務;根據應用層的監控請求,通過自身存儲 的服務對數據層中的數據和/或自身釆集的數據進行運算,獲取監控數據,并將 獲取的監控數據返回應用層;
所述數據層,用于存儲關于監控資源端的數據。
所述系統還包括組件層,用于存儲能夠協調服務、實現監控的組件;
所述服務層,還用于通過自身存儲的服務及組件層中相應的組件,對數據 層中的數據和/或自身采集的數據進行運算,獲取監控數據,并將獲取的監控數 據返回應用層。
所述服務層還用于對監控資源端的數據進行采集,并將釆集的數據存儲至 數據層;
所述數據層還用于存儲來自服務層的、關于監控資源端的數據。 所述組件層還用于存儲能夠實現映射功能的組件,對數據層中存儲的數據 進行映射;
所述服務層還用于對經過組件層映射的數據進行運算,獲取監控數據。 所述應用層還用于根據用戶搡作,將控制命令傳遞至服務層;以及對來自 服務層的操作結果進行展示;
所述服務層還用于根據所述控制命令執行操作,并將搡作結果返回應用層。 一種監控方法,包括
用戶通過應用層確定監控需求,應用層根據用戶的監控需求,發送監控請 求至服務層;
服務層收到監控請求后,根據所述監控請求,通過自身存儲的服務對數據 層中的數據和/或自身采集的數據進行運算,獲取監控數據; 服務層將所述監控數據返回應用層進行展示。
服務層收到監控請求后,還包括步驟判斷是否需要結合組件進行數據處 理,如果需要,通過自身存儲的服務及組件層中相應的組件,對數據層中的數據和/或自身釆集的數據進行運算,獲取監控數據,并將獲取的監控數據返回應 用層;如果不需要,通過自身存儲的服務對數據層中的數據和/或自身釆集的數 據進行運算,獲取監控數據,并將獲取的監控數據返回應用層。
該方法還包括步驟服務層對監控資源端的數據進行釆集,并將釆集的數 據存儲至數據層。
所述服務層對數據層中的數據和/或自身采集的數據進行運算為 通過組件對數據層中存儲的數據進行映射;
服務層對經過組件映射的數據進行運算,獲取監控數據。
用戶通過應用層確定監控需求之前,包含步驟用戶通過單點登陸方式接 入應用層。
該方法還包括
用戶通過應用層向服務層發送控制命令;
服務層收到所述控制命令后,根據所述控制命令執行操作,并將搡作結果 返回應用層進行展示。
本發明監控服務器及監控方法,在監控服務器上設置應用層、數據層、服 務層和組件層,其中,數據層對監控資源端的數據進行統一存儲,通過應用層 實現與用戶的交互,并根據用戶的操作,由服務層中的服務、或由組件層中的 組件協調服務層中的服務,對數據層中的數據和/或服務層采集的數據進行運 算,最后,再將處理后的數據返回應用層,由應用層展示給用戶。由于對監控 資源端的數據進行統一存儲,所以,本發明能夠靈活集成多種監控軟件進行更 有效的監控。
另外,服務層中的服務之間可以通過調用,來實現現有監控軟件的各種功 能,所以,本發明能夠提高模塊的重用性,節省代碼及系統資源。
圖l為本發明監控服務器的組成結構示意圖; 圖2為本發明監控方法的實現流程示意圖;圖3為本發明實施例1監控方法的實現流程示意圖; 圖4為本發明實施例l主從分布式結構示意圖5為本發明實施例2服務層收到操作命令時的處理方法實現流程示意圖。
具體實施例方式
本發明的基本思想是在監控服務器上設置應用層、數據層、服務層和組 件層,通過數據層對監控資源端的數據進行統一存儲,通過應用層實現與用戶 的交互,并根據用戶的操作,由服務層中的服務、或由組件層中的組件協調服 務層中的服務,對數據層中的數據和/或服務層采集的數據進行運算,最后,再 將處理后的數據返回應用層,由應用層展示給用戶。
為使本發明的目的、技術方案和優點更加清楚明白,以下舉實施例并參照 附圖,對本發明進一步詳細說明。
圖1為本發明監控服務器的組成結構示意圖,如圖l所示,本發明監控服 務器包括應用層ll、服務層12、數據層13和組件層14;其中,
應用層ll,用于與用戶進行交互,根據用戶的操作指令,將監控請求傳遞 至服務層12;以及對服務層12返回的監控數據進行展示;
一般,用戶通過單點登錄方式接入應用層11,以屏蔽不同監控軟件頁面的 差異性,提供統一的監控門戶平臺。
實際應用中,應用層11可以通過監控門戶的方式,提供統一的監控交互界 面,以支持與用戶之間的交互。
服務層12,用于存儲各種服務;還用于根據應用層11的監控請求,通過 自身存儲的服務對數據層13中的數據和/或自身釆集的數據進行運算,以獲取 監控數據,并將獲取的監控數據返回應用層11;
這里,將通過集成可以滿足各種監控業務功能的功能模塊稱為服務,服務 通過提供定義良好并且與實現無關的接口,在滿足不同監控業務功能時,均可 以被其他服務調用。具體實現過程中,可以把現有的監控軟件作為一種滿足業 務需要的服務,也可以將現有的監控軟件區分為若干個功能模塊,每個功能模
8塊對應一種服務。
通過對服務的區分,可以盡可能地發揮各監控軟件的優勢功能,又可以對 各監控軟件的重復功能進行整合,即統一由一個服務實現,減少多余的資源 消耗。
另外,服務器自身采集的數據為服務層12從監控資源端和/或其他數據 存儲單元采集的數據。
在實際應用中,為了實現監控,可以采用主從分布式結構,即由一個主 監控服務器和多個從監控服務器共同實現監控,主監控服務器負責與用戶交互、 數據采集及數據運算等功能,主監控服務器的服務層12進行數據處理時,可以 從從監控服務器的服務層12采集需要的數據。從監控服務器主要用于按照現有 的數據釆集方式采集監控資源端的數據并存儲;在主監控服務器向其采集數據 時,返回相應的數據。
為了實現主從分布式結構的數據通信,可以釆用前臺由異步JavaScript和 XML ( AJAX, Asynchronous JavaScript and XML )、 JSON ( JavaScript Object Notation, —種輕量級的數據交換語言)、JavaScript及Servlet等組合和后臺由 Python、 Urllib、 XML-RPC、 RSET及Servlet等組合兩種方式來實現。針對不 同的業務數據或用戶的需求,可選擇其中之一,比如從多個從監控服務器獲 取數據,如果想達到一個從監控服務器的數據來了就進行展示,可以采用前臺 AJAX方式實現;如果想把每個從監控服務器的數據生成完后,統一處理后統 一展示,可以采用后臺Python方式實現,而對于向從監控服務器做數據同步時, 一定得采用后臺Python方式處理,這樣可以保證事物操作的一致性。
數據層13,用于存儲關于監控資源端的數據。
這里,數據層13對監控資源端的數據按統一的數據結構進行存儲;或者, 按照現有不同監控軟件對數據的采集方式對應的數據結構進行存儲。
按統一的數據結構進行存儲時,所述數據結構可以包括設備信息、設備 對應的各種服務信息、事件告警信息、性能數據、對設備及服務等的配置管理 數據等。組件層14,用于存儲能夠協調服務、實現監控的組件。
本發明通過開發一些特定的組件來協調不同的服務一起工作,通過組件層 14的控制,服務之間可以通過彼此相互調用, 一起協調完成某個監控功能,盡 量減少重新開發,提高服務的重用性。具體實現時,可以通過暴露服務的應用
程序接口 (API),以供其它服務調用,從而一起協調完成用戶需要的監控功能。 這里,所述開發特定組件協調不同服務是指通過設置能完成用戶所需功 能的一個或多個組件來對服務進行處理、或提供給服務使用,例如,通過某個 組件可以管理對應的服務、或是調用某個服務,或擴展某個服務的服務功能; 通過組件可以屏蔽多個服務之間采集數據格式的不一致性,實現監控業務數據 展示的一致等等。總之,所有額外所需的功能都可以通過設置不同的組件來實 現管理。
服務層12,還用于通過自身存儲的服務及組件層14中相應的組件,對數 據層13中的數據和/或自身采集的數據進行運算,以獲取監控數據,并將獲取 的監控數據返回應用層11。
服務層12,還用于對監控資源端的數據進行采集,并將采集的數據存儲至 數據層13;數據層13還用于存儲來自服務層12的、關于監控資源端的數據。
另外,通過開發特定的組件,還可以對數據層13中以不同存儲結構存儲的 數據實現映射管理,從而實現對不同格式數據的運算及搡作,即
組件層14,還用于存儲能夠實現映射功能的組件,對數據層13中存儲的 數據進行映射;服務層12,還用于對經過組件層14映射的數據進行運算,以 獲取監控數據。
應用層11,還用于根據用戶操作,將控制命令傳遞至服務層12;以及對來 自服務層12的操作結果進行展示;服務層12,還用于根據所述控制命令執行 搡作,并將搡作結果返回應用層11。
數據層13按照現有不同監控軟件對數據的采集方式,按照對應的數據結構 進行存儲,這是因為,建立統一的數據模型是一件重要而且需要時間的工作。 為了使本發明的監控方法較快地應用于實際,服務層12對監控資源端的數據進行采集,可以按照現有不同監控軟件對數據的采集方式,同時進行數據采集, 并將釆集的數據發送至數據層13,由數據層13按照相應的數據結構進行存儲。 相應的,對于數據層13存儲的不同數據結構的數據,要對其進行運算以獲 取監控數據時,可以通過開發支持數據映射及運算的服務,實現對以不同數據 結構存儲的數據的映射及運算,也可以開發支持數據映射的組件,實現以不同 數據結構存儲的數據的映射,服務直接對通過組件映射后的數據進行運算。
圖2為本發明監控方法的實現流程示意圖,如圖2所示,本發明監控方法 包括以下步驟
步驟21:用戶通過應用層確定監控需求,并將用戶的監控請求發給服務層。 一般,用戶通過單點登陸方式接入應用層。
這里,應用層可以以交互界面的形式與用戶進行交互,用戶通過交互界面 選擇需要監控的內容,即確定監控需求,例如,用戶通過交互界面選擇告警監 控、性能監控等一種監控或多種監控的組合。用戶確定監控需求后,應用層通 過向服務層發送監控請求,將用戶的監控請求傳遞至服務層。
步驟22:服務層根據用戶確定的監控需求,判斷是否需要結合組件進行數 據運算,如果是,則執行步驟23;否則,執行步驟24。
這里,所述判斷可以是判斷服務層中的服務是否能夠獨立進行數據處理, 如果服務層中某個服務獨立進行數據處理,便可以滿足用戶的監控需求,則不 需要結合組件進行數據處理;如果需要服務層中多個服務通過互相調用共同進 行數據,才能滿足用戶的監控需求,則需要結合組件進行數據處理。
步驟23:服務層通過自身存儲的服務及組件層中相應的組件,對數據層中 的數據和/或自身采集的數據進行運算,以獲取監控數據,之后執行步驟25。
這里,服務層自身采集的數據可以是服務層從監控資源端采集的數據,也 可以是服務層從從監控服務器的服務層采集的數據。
步驟24:服務層通過自身存儲的服務對數據層中的數據和/或自身采集的數 據進行運算,以獲取監控數據。
步驟25:服務層向應用層返回監控數據。
ii步驟26:應用層向用戶展示監控數據。
需要說明的是,用戶還可以通過應用層向服務層發送控制命令,服務層收 到所述控制命令后,根據所述控制命令執行操作,并將搡作結果返回應用層進
行展示。
實施例1:
本實施例中,采用Zenoss和Hyperic組合進行監控,且采用主從分布式結構。
圖3為本發明實施例l監控方法的實現流程示意圖,如圖3所示,本發明 實施例1的監控方法包括以下步驟
步驟31:用戶通過應用層確定需要進行報表(Report)展示、事件告警、 性能監控及安全管理配置這里,用戶通過單點登陸方式接入應用層。
步驟32:應用層將用戶的監控需求傳遞至服務層。
步驟33:服務層根據用戶的監控需求,確定需要同時進行Zenoss監控和 Hyperic監控,并需要結合組件進行運算。
Zenoss是基于Agentless方式的監控軟件,它支持分布式管理功能,具有很 強大的網絡自動發現功能。另外,Zenoss軟件中有非常好的告警事件管理功能, 它本身是一個非常好的事件平臺,事件升級、報警、過濾等功能都有。Hypeirc 的報警事件能傳遞到Zenoss中,這就意味著Zenoss可以作為一個統一集成的 事件管理平臺,在這里對集中管理所有類型的告警事件。
Hyperic是一種基于Agent方式的監控軟件,能支持目前流行的所有基礎架 構軟件包括各種商業的操作系統、數據庫、中間件,Hyperic通過在一臺服務器 上部署一次代理程序后,其他的工作就都轉到控制臺(Web console )上了 ,在 那里,可以配置代理對各種資源的管理。
從Zenoss和Hyperic的各種圖形上,可以很好的評價和監控各種IT服務的 質量。根據上述內容可以看出,由于Zenoss監控和Hyperic監控完全能夠支持當 前用戶的監控需求,因此,同時進行Zenoss監控和Hyperic監控,便可滿足用 戶的監控需求,即可實現Reports展示、事件告警、性能監控及安全管理配 置。
步驟34:服務層通過自身存儲的服務及組件層中相應的組件,基于Zenoss 監控和Hyperic監控的監控原理,對數據層中存儲的數據和/或自身采集的數據 進行運算,獲取監控數據。
在本實施例中,主從分布式結構如圖4所示,主監控服務器為Zenoss主監 控服務器,從監控服務器具體為Zenoss從監控服務器和Hyperk從監控服務器, 其中,Zenoss從監控服務器主要負責對網絡系統及網絡設備的數據采集,采用 SNMP技術;Hyperic從監控服務器負責采集應用系統的數據,采用的技術主要 有Java管理擴展(JMX, Java Management Extensions)、 SNMP、 Java數據庫連 接(JDBC, Java Data Base Connectivity )和自身自帶的系統信息的獲取與上傳 (System Information Gather & Report, SIGAR)標準。
Zenoss主監控服務器的服務層需要采集數據進行運算時,可以從監控資源 端采集,也可以從從監控服務器的服務層進行采集。
步驟35:服務層將監控數據返回應用層,從而展示給用戶。
實施例2:
本實施例中,服務層根據用戶的搡作命令,執行相應操作,并向應用層返 回操作結果進行展示。
圖5為本發明實施例2服務層收到操作命令時的處理方法實現流程示意圖, 如圖5所示,本發明實施例2服務層收到操作命令時,包括以下步驟
步驟51:用戶在應用層進行操作,應用層根據用戶搡作產生控制命令。
控制命令是指一些操作,比如開始監控、暫停監控、結束監控等控制命令。
步驟52:應用層將控制命令發送至服務層。
步驟53:服務層根據操作命令執行相應的操作。這里,如果控制命令為停止某個從監控服務器監控的主機的數據庫,主監 控服務器的服務層根據來自應用層的控制命令,向指定的從監控服務器發送停 止命令,從監控服務器接收到停止命令后,停止指定主機的數據庫,并向主監 控服務器返回已停止信息。
步驟54:服務層將操作結果返回應用層進行展示。
以上所述,僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。
權利要求
1、一種監控服務器,其特征在于,該系統包括應用層、服務層、組件層和數據層;其中,所述應用層,用于與用戶進行交互,根據用戶的操作指令,將監控請求傳遞至服務層;還用于對來自服務層的監控數據進行展示;所述服務層,用于存儲各種服務;根據應用層的監控請求,通過自身存儲的服務對數據層中的數據和/或自身采集的數據進行運算,獲取監控數據,并將獲取的監控數據返回應用層;所述數據層,用于存儲關于監控資源端的數據。
2、 根據權利要求l所述的監控服務器,其特征在于,所述系統還包括組件 層,用于存儲能夠協調服務、實現監控的組件;所述服務層,還用于通過自身存儲的服務及組件層中相應的組件,對數據 層中的數據和/或自身采集的數據進行運算,獲取監控數據,并將獲取的監控數 據返回應用層。
3、 根據權利要求l所述的監控服務器,其特征在于,所述服務層還用于對 監控資源端的數據進行釆集,并將釆集的數據存儲至數據層;所述數據層還用于存儲來自服務層的、關于監控資源端的數據。
4、 根據權利要求2所述的監控服務器,其特征在于,所述組件層還用于存 儲能夠實現映射功能的組件,對數據層中存儲的數據進行映射;所述服務層還用于對經過組件層映射的數據進行運算,獲取監控數據。
5、 根據權利要求l所述的監控服務器,其特征在于,所述應用層還用于根 據用戶操作,將控制命令傳遞至服務層;以及對來自服務層的操作結果進行展 示;所述服務層還用于根據所述控制命令執行操作,并將操作結果返回應用層。
6、 一種監控方法,其特征在于,該方法包括用戶通過應用層確定監控需求,應用層根據用戶的監控需求,發送監控請求至服務層;服務層收到監控請求后,根據所述監控請求,通過自身存儲的服務對數據層中的數據和/或自身釆集的數據進行運算,獲取監控數據;服務層將所述監控數據返回應用層進行展示。
7、 根據權利要求6所述的監控方法,其特征在于,服務層收到監控請求后, 還包括步驟判斷是否需要結合組件進行數據處理,如果需要,通過自身存儲 的服務及組件層中相應的組件,對數據層中的數據和/或自身釆集的數據進行運 算,獲取監控數據,并將獲取的監控數據返回應用層;如果不需要,通過自身 存儲的服務對數據層中的數據和/或自身釆集的數據進行運算,獲取監控數據, 并將獲取的監控數據返回應用層。
8、 根據權利要求6或7所述的監控方法,其特征在于,該方法還包括步驟: 服務層對監控資源端的數據進行釆集,并將釆集的數據存儲至數據層。
9、 根據權利要求7所述的監控方法,其特征在于,所述服務層對數據層中 的數據和/或自身采集的數據進行運算為通過組件對數據層中存儲的數據進行映射; 服務層對經過組件映射的數據進行運算,獲取監控數據。
10、 根據權利要求6所述的監控方法,其特征在于,用戶通過應用層確定 監控需求之前,包含步驟用戶通過單點登陸方式接入應用層。
11、 根據權利要求6所述的監控方法,其特征在于,該方法還包括 用戶通過應用層向服務層發送控制命令;服務層收到所述控制命令后,根據所述控制命令執行操作,并將操作結果 返回應用層進行展示。
全文摘要
本發明公開一種監控服務器,包括應用層、服務層和數據層;其中,應用層與用戶進行交互,將監控請求傳遞至服務層;對來監控數據進行展示;服務層存儲各種服務;根據應用層的監控請求,對數據層中的數據和/或自身采集的數據進行運算,以獲取監控數據,并返回應用層;數據層存儲關于監控資源端的數據,本發明監控服務器還包括組件層,用于存儲能夠協調服務、從而實現監控的組件。本發明還相應地公開一種監控方法,本發明對監控資源端的數據進行統一存儲,所以,本發明能夠靈活集成多種監控軟件進行更有效的監控,服務層中的監控服務之間可以通過調用來實現現有監控軟件的功能,能夠提高模塊的重用性,節省代碼及系統資源。
文檔編號H04L12/26GK101567816SQ20091008572
公開日2009年10月28日 申請日期2009年5月27日 優先權日2009年5月27日
發明者付衛兵, 振 岳, 李石磊, 楊志剛, 韓志剛 申請人:北京中企開源信息技術有限公司