祝紅光,周亮瑾,李天翼,賈成強
隨著計算機應用系統的不斷發展,系統規模越來越龐大,應用功能和技術實現越來越復雜。保證系統的各個職能單元和功能層次協調有效運行是重要的技術內容。系統協調、有效運行的實現途徑有兩個方面:(1)應用系統內部的結構、流程和數據、操作的耦合實現。(2)借助集中的監控管理系統,把物理位置分散、處于不同技術層面、承擔不同業務功能的對象單元信息集中監控,使整個應用系統運行情況處于可知、可控的狀態。
監控系統的主要功能是發現應用系統運行的問題、定位故障和協助排除故障。現在,監控系統已經成為大型應用系統不可或缺的重要組成部分。系統運行狀態監控的專業軟件也成為一個獨立的研究方向。監控系統的設計包括多個環節,如監控數據采集、監控數據組織、監控內容展現等。本文主要討論監控對象的數據結構。
在監控對象的數據結構中,主要有兩個方面數據:對象描述數據和對象組織數據。
對象描述是一類對象的完整描述,通過描述數據,可以全面了解監控對象的具體屬性和系統位置。
具體對象的描述數據是完整且獨立的。對象之間的物理聯系和邏輯聯系則由組織數據完成。
監控對象的屬性數據可分為共性數據和個性數據兩個方面。共性數據中包含統一的字段;具體類型對象的個性字段描述該類型對象的特殊屬性。共性數據是個基類,具體監控對象在繼承了基類基礎上,補充以個性屬性,形成完整的監控對象數據。在共性字段和個性字段中又可以分出靜態數據和動態數據。靜態數據描述對象固定不變的屬性,動態數據描述對象的可變屬性。監控對象數據構成見圖1。

圖1 監控對象數據構成
共性靜態數據包括對象名稱、類型、廠商描述、Agent位置、基礎圖標、狀態顯示類型、狀態數據類型和運行數據展現類型。共性動態數據是狀態數據、狀態更新時間、對象可控標識等。個性靜態是具體對象類型的型號版本、固定功能參數。個性動態數據包括配置數據和運行數據。監控系統可以根據個性動態數據計算出共性動態數據。
靜態數據是對象建立的基礎,動態數據是具體對象運行期間的變化和配置改變,對于具體對象,前者固定不變,后者需要定期檢測或觸發型更新。兩者結合構成完整的監控對象。
對象描述數據是對獨立的對象個體進行描述。但是,監控系統面向眾多的監控對象個體進行管理,必然導致管理混亂,監控效率低,且不易綜合考察系統狀態。面向監控需求,眾多的監控對象必須依據物理的聯系和邏輯的聯系有機地聯系起來,才能夠清晰地展現被監控的環境,有效地索引對象層次,準確地定位運行故障和問題。
監控對象之間存在物理聯系、邏輯聯系和管理聯系。物理聯系是最直接的關系,如數據庫服務器和數據庫存儲單元之間的整體對象和局部對象的關系。邏輯聯系是對象之間沒有必然的聯系,但是在邏輯應用中,屬于共同的邏輯單元,處于密切的邏輯流程中,彼此運行狀態直接產生影響。管理聯系是單純以監控組織為目的,把相關的、或同類型的、或僅僅是密切關注的不相關的對象進行集合型組織,方便監控。
監控系統基于3種聯系方式,將對象集合中的對象進行組織。 組織元素有視圖和索引路徑。一個監控視圖就是一個頁面,頁面中包含了屬于同一上級對象的監控對象。索引路徑是對象和視圖的關聯關系。如果一個對象存在子對象,那么該對象和包含子對象的視圖之間的聯系就是一條索引路徑。

圖2 監控對象集合(a)

圖3 監控對象結構
視圖是屬于相同展現頁面的索引節點的集合。索引節點數據包括指代對象的指針、上層索引節點的指針、所屬視圖和子視圖4個元素。
在圖2中,各個對象是獨立的監控目標,不體現任何相互關系。在圖3中,各個索引節點指代具體監控對象,通過視圖和索引路徑關聯,A1和A2是A的子對象在A的展開視圖中展現,A11是A1的子對象,在A1的展現視圖中展現。C是個方形對象,表示是個管理文件夾對象,其展開圖包含了具有某種監控共同點的A1和B1。
在小型監控系統或專用監控系統中,監控內容較單一,被監控環境規模較小,比如面向SqlServer數據庫的專用監控系統,面向某個廠商或某類網絡設備的監控系統,其監控內容可以很詳細,但是對象劃分和應用規模都比較小。在沒有復雜的對象構成的監控環境中,對象數據和組織數據分離的優勢得不到體現。對象聯系可以直接合并到對象數據中。
綜合性監控系統是對面向分布式節點的操作系統、網絡環境、數據庫系統和應用系統進行監控管理,其監控內容的技術涵蓋面寬,包含多類型的對象。其監控環境基本是分布式系統的集中管理,監控對象多,且相互關聯關系復雜。集中管理的綜合監控系統必需提供對象自由組合的功能,有利于用戶建立不同側面不同層次的監控對象視圖。以上需求都要求監控系統中對象數據和組織數據分離。
另外,對象數據和組織數據分離可以保證管理對象的獨立性,無論是在對象設計,還是在監控功能應用中,都體現了監控事務的完整。尤其在監控Agent的設計中更能夠體現面向對象的數據采集和控制操作,而無需兼顧對象之間的關聯。
對象物理關系是基礎的管理模式,反映了事務的實際關系。物理關系是最簡單和直觀的索引方式。為了管理的方便和監控的需要,監控系統提供了監控對象的組合功能,見圖4。用戶可根據需求把管理的對象隨意組合在工作視圖內。組合功能得益于監控系統的一個文件夾對象類型。文件夾對象就如同文件系統的文件夾可以包含其他文件夾和具體管理對象。用戶利用文件夾可以實現多層次的組合視圖。

圖4 監控對象集合(b)

圖5 文件夾對象層次
圖5表示A和B樹型結構式物理關系的組織方式。用戶建立了兩個文件夾對象C和D,D是C的子文件夾,根據管理的需要這種包含關系可以多層次地設置。文件夾展開視圖方式為組合方式。兩種模式相結合,監控系統為用戶提供了靈活的對象索引形式。
監控對象的索引形式有兩個方向,向下是展開方向,向上是歸結方向。展開方向是應用環境的故障定位甚至分析方向。歸結方向是對象運行狀態的反映途徑。
監控結構的樹型結構中,狀態信息逐層向上反映,使用戶在清晰簡單的高層界面中可以掌控應用系統的狀態。如圖6,A的狀態綜合了其下子對象的狀態,包括A11、A1、A2。A11的狀態發生變化,會向上反映到A1,進而匯報到A;A1同樣匯報到D,再傳遞到C。
狀態優先級是狀態反映的技術實現重點。對象狀態根據應用系統特點可以分為幾級。以紅(故障)、黃(警告)、綠(正常)3級狀態為例。
假設A沒有自身的狀態型參量,它的狀態是A1和A2狀態的綜合,A、A1和A2的狀態經過以下步驟變化。
(1)初始狀態:A、A1和A2都是綠色(正常狀態)。
(2)A1的狀態變成紅色(故障狀態),A的狀態表現為紅色。
(3)A2的狀態變成黃色(警告狀態),A的狀態仍表現為紅色。
(4)A1的故障解除,恢復綠色(正常狀態),A的狀態表現為黃色。
(5)A2的狀態恢復正常,恢復綠色(正常狀態),A的狀態表現為綠色。

圖6 狀態反映優先級
對于3個狀態級別的監控系統,設置兩個狀態位,分別表示紅色狀態和黃色狀態。一個對象可能具有多個狀態事件,但優先展現優先級高的狀態。兩個狀態位作為狀態計數器,全面體現完整的狀態信息。
監控系統的狀態級別不一定是3個,可以更多,比如是m個級別,可以采用m-1個狀態計數器表示。
監控對象圖標展現的僅是狀態級最高的故障,存在級別低的故障事件被屏蔽的問題,且只靠監控圖標狀態,不能夠描述具體故障參量的信息,所以在圖標狀態之外,還要設置狀態事件數據,數據收集中體現的狀態可以在狀態事件中描述。瀏覽一個監控對象的狀態事件,系統會根據對象組織結構,把所有子對象的當前狀態事件全部列出來,避免了狀態屏蔽,且提供詳細的狀態信息描述。
通過對監控系統對象數據結構的研究,得出以下結論:(1)對象數據追求完整性和獨立性。(2)關系數據力求直觀和靈活。(3)狀態反映避免遺漏和屏蔽。遵循科學的對象數據設計原則和方法,對整個監控系統的實現和應用效果起到重要作用。
管理監控功能是系統性的結構,不但要有合理的管理端數據和操作,還要有監控代理端的協同和配合,并且要對具體監控對象進行深入的分析,將對象的描述參量進行篩選和綜合,構建出抽象且全面的監控對象。