




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、研究管理代理與監控模塊通信設計探析 摘要:詳細介紹了面向應用軟件的網絡監控系統中管理代理和監控模塊通信的設計與實現過程。包括管理信息存儲的優化設計、內存映射文件的存儲數據結構設計、監控指令轉發技術、內存映射文件的通信方式、同步機制應用等。通過內存映射文件方式存儲管理信息,高效地完成了收集各應用程序實例的監控信息任務,并實現了監控信息的存儲、共享和監控模塊與管理代理間實時信息交換的功能。關鍵詞:優化存儲;內存文件映射;消息機制;同步機制隨著網絡規模增大,網絡結構及網絡應用日漸復雜,傳統的物理安全技術和措施已經不足以保證信息系統的安全,因此網絡管理系統
2、作為網絡安全運行的保證,其重要性越來越突出。為了提高計算機網絡信息安全,許多相關的網絡安全產品被開發,但大多是基于網絡硬件設備,如路由器、集線器、交換機等,而對網絡應用軟件的研究和開發相對較少14。為了保證網絡環境中的應用程序正常高效地運行,筆者設計了基于SNMP的ASNMS(Application Software Net Monitoring System,網絡應用軟件監控系統)。該系統選擇運行于網絡環境中的應用程序為研究對象5,6。1網絡應用軟件監控系統(ASNMS)簡介ASNMS的主要監控目標是網絡中的應用軟件,通過及時獲取軟件中重要變量值(如系統配置、狀態指示等),從而及時了解整個網
3、絡中應用程序的狀態,并且還可以通過管理站點對各受控站點中的應用程序進行控制操作,提高整個網絡和應用系統的安全性。該網絡應用軟件監控系統主要有三個模塊5,6:(1)管理站點主程序。該程序在管理站點上運行。通過該程序,管理站點可以使用UDP/IP協議與管理范圍內的所有受控站點進行通信,收集網絡應用程序的監控信息,并下發各種控制命令。(2)管理代理。每一個受控站點上運行一個管理代理程序(有且僅有一個)。管理代理是系統的通信中心。一方面通過內存映射文件與受控站點上的各應用程序實例進行通信,收集各應用程序實例的監控信息;另一方面通過UDP協議與管理站點通信,發送受控站點的管理信息以及轉發管理站點的控制信
4、息。(3)監控模塊。該模塊是供軟件開發人員使用的一個通用接口模塊。它負責從受控應用程序中獲取監控信息,發送到管理站點,并且也能接收從管理代理轉發的管理站點命令,對受控應用程序執行一定的控制操作。從結構上來看,監控模塊附屬于受控應用程序,但它以單獨的線程形式存在。2管理信息存儲的設計為了監控模塊工作的需要,同時為了能更方便地將監控信息傳送給管理代理,監控模塊需要將監控信息以一定的形式存儲起來。監控模塊監控的目標是應用程序中的變量。由于現在軟件開發大多使用的是面向對象的方法,在其程序中各種變量是有層次結構關系的,這一點必須在監控信息中體現出來7。監控信息從邏輯上看應該是以樹的形式存在,并且存儲的是
5、各種變量的信息,而變量的長度是不相同的,在這棵樹中各個節點的空間大小有可能不相同。由此看來,無論是從存儲內容上還是從邏輯結構上看,監控信息的存儲結構均是相對較為復雜的。下面三種設計方案可以滿足這樣的要求:(1)在監控模塊內存空間內生成一棵二叉樹。這是最常規的存儲方法。在此情況下,只需要設計一個較為合理的樹結構,二叉樹就能直接存儲在監控模塊的內存空間中,訪問方便。同時因為在許多語言中均有任意類型的數據類型,由此可以將不同數據類型的數據方便地存儲在一種數據結構中。但是由于這棵樹存在于監控模塊的內存空間中,不方便管理代理程序對其讀取,監控模塊還需要通過一定的方法將該樹傳送給管理代理4,7。優點:實現
6、簡單,監控模塊可以很方便地對其進行讀寫操作。缺點:不方便管理代理程序對監控信息讀取,需要使用其他方法將信息傳送給管理代理。(2)將監控信息存儲在磁盤文件中。為了解決管理代理和監控模塊共享監控信息的問題,監控模塊可以將監控信息存儲為磁盤文件形式。在此情況下,需要設計一套完整合理的文件空間使用策略,保證能夠完整地存儲監控信息。由于在Windows程序中采用了虛擬內存策略,不同應用程序內存空間是不同的,即使某應用程序獲取了另一個程序中的某個指針,也不能正確地訪問到其數據。在對變量值進行存儲時,一定要注意不能存儲有關變量的指針信息,而應該想辦法存儲其中變量的實際數據8。同時因為是將監控信息存儲于磁盤上
7、,需要采取一定的措施盡量避免出現垃圾文件的情況,同時還要防止在工作狀態下用戶有意或無意地修改、刪除該文件。優點:多個程序可以方便地共享數據。缺點:實現較復雜,容易產生垃圾文件,容易泄漏和丟失監控信息。(3)將監控信息存儲在內存文件映射中。這是對方案(2)的改進。方案(2)將監控信息存儲于磁盤文件中,由此使得容易產生垃圾文件、容易泄漏和丟失監控信息。那么如果將監控信息直接存儲在內存當中呢?采用內存映射文件是一個很好的解決辦法。應用程序在需要時在內存中開辟一定的空間存儲數據,當應用程序關閉后,由于操作系統的內存管理機制,內存文件將自動被回收,安全性高。但是在生成內存映射文件時,必須要指定文件的大小
8、,此時如果處理不當將可能出現存儲空間不夠用的情況4,8。優點:多個程序可以方便地共享數據,數據不易泄漏,安全性高。缺點:實現較復雜,必須指定文件大小,處理不當可能出現空間不夠用的情況。綜合三種方案,方案(3)是最合適的。只要指定足夠的文件大小,它不僅滿足監控模塊存儲管理信息的需要,信息安全性高,同時可方便地實現監控模塊與管理代理之間實時信息交換功能,從而解決它們之間的通信問題。3管理代理與監控模塊通信的設計31管理代理與監控模塊間通信通信包括系統初始化連接建立、命令轉發和自定義消息。(1)系統初始化連接建立。管理代理隨受控站點啟動后,必須接收各個應用程序實例的監控模塊的注冊信息,與監控模塊建立
9、初始連接。(2)命令轉發。管理代理接收到管理站點發送的UDP報文后,先識別該報文是發送給哪個監控模塊的,然后通過Windows消息形式發送給指定的監控模塊。(3)管理代理與監控模塊之間約定一系列自定義消息,并向Windows注冊,保證雙方能夠正確地通過自定義消息進行通信。32監控信息的收集與組織在受控站點上,管理代理與多個應用程序實例的監控模塊之間是通過內存映射文件進行通信的。監控信息存儲在內存映射文件中。(1)監控信息收集就是對監控模塊對應的內存映射文件進行遍歷。通過遍歷獲得最新的被監控應用程序的狀態、監控變量的值等。(2)監控信息收集時,需提供有效的同步機制,防止管理代理與監控模塊同時訪問
10、同一個監控信息文件時出錯。(3)監控信息組織就是提供安全高效的數據存儲結構,能夠完整地記錄所有監控信息。33內存映射文件存儲數據結構設計為了能存儲完整的變量結構信息,可將監控信息的邏輯存儲結構設計為如圖1所示。在監控信息的邏輯結構中存在兩種結構指針,即橫向指針表示父子關系和縱向指針表示兄弟關系,由此而構成了一棵二叉樹。本文原文在圖1所示結構中,由于不同變量類型存儲大小不同,從而導致二叉樹中各個節點的大小不統一。為了方便地進行存儲空間管理,同時又能準確完整地記錄如上變量結構信息,筆者設計了一套內存映射文件的存儲數據結構。其基本思想為:將數據本身與數據間的邏輯關系分開進行處理,每次根據實際使用的需
11、要在文件空閑空間中分配相應大小的空間,并在該空間的起始位置生成一個空間信息記錄。其中包括存放的變量類型、變量大小、變量指針、結構指針等數據信息。此外還包括了該空間的地址、前后相鄰區域地址、本空間大小等空間管理信息。真正的記錄數據實體存放在該空間信息記錄之后的剩余空間中(剩余空間的大小可以是不同的)。文件的存儲結構如圖2所示。由圖2可以看出,在監控信息存儲文件中所有的存儲空間均是前后緊連著的。通過空間信息記錄可以得知某區域的大小以及是否正在被使用。這樣就能夠方便地進行空間分配和回收工作。又因為在空間信息記錄中存在變量結構指針,因而通過空間信息記錄也能方便地訪問到數據之間的邏輯結構關系。由此看出,
12、空間信息記錄在整個存儲設計中占有很重要的位置,正是利用它才實現了對存儲空間的靈活使用。空間信息記錄的數據結構設計如下:typedef struct TItemInfo/以下為數據(變量)信息char NodeNameMAX_NODENAME;/節點名 char NodeInfoMAX_NODEINFO;/節點信息 int NodeType;/1:程序節點;2:類節點;3:變量節點;其他未定義int VarType;/存儲數據的變量類型,特別:程序節點存儲了句柄信息,long型int VarSize; /數據大小bool Writable; /變量是否可寫void *VarAddr; /數據在程
13、序中的地址void *PBrother; /前一個同級(兄弟)節點void *NBrother; /下一個同級(兄弟)節點void *Father; /父親節點void *Child; /下一級(孩子)節點/以下為空間管理信息void *Addr; /本區域在文件中的相對地址long ItemSize; /本區域大小void *PAddr; /前一個區域在文件中的相對地址void *NAddr; /后一個區域在文件中的相對地址bool InUse; /本區域是否正在使用TItemInfo;4關鍵技術及其具體實現41命令轉發管理代理接收到的命令有查詢被監控應用程序狀態、刷新監控變量、鎖定監控變量
14、、鎖定應用程序窗口等。管理代理根據UDP報文內容,將命令發送給指定的監控模塊。命令的轉發均是通過自定義消息實現的。本文使用Windows消息機制自定義了一系列消息并實現其消息的處理,結合到本監控系統的需要,管理代理中主要定義了如下消息及其處理:(1)WM_READAPPHANDLE:讀應用程序實例中監控模塊的相關句柄;(2)WM_READAPPSTRUCT:讀應用程序實例中的MIB子樹結構;(3)WM_READAPPDATA:讀應用程序實例中的MIB節點的值;(4)WM_SETAPPDATA:設置應用程序中的MIB節點的值;(5)WM_READAPPTRAP:讀應用程序發送來的Trap信息;(
15、6)WM_READPROXYSET:為應用程序實例的MIB子樹中某個MIB節點設置閾值;(7)WM_MIBERROR:代理與應用程序之間的通信發生錯誤。由于在一個標準的Windows應用程序中,消息是由窗口處理的,而在管理代理中沒有窗口,也不是從窗口繼承的一個類,管理代理不能直接進行消息操作。在程序中使用AllocateHWnd函數為監控模塊虛擬生成一個消息窗口,專用來進行消息捕獲、發送與處理。42內存文件映射與同步機制421內存文件映射實現管理代理與監控模塊之間通信管理代理與應用程序實例的監控模塊之間的數據交換采用內存文件映射這種進程間的通信方式。管理代理的文件映射和文件映射視圖的創建代碼如
16、下:HANDLE h_filemap; /內存文件映射句柄HANDLE h_LocalMapView; /內存文件映射視圖句柄/創建內存文件映射對象,有讀寫權限,對象名為ProxyFileMaph_filemap=CreateFileMapping(HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, VIEWSIZE, "ProxyFileMap");if (h_filemap=NULL)AfxMessageBox("Create Local File Map Error!"); return false;/創建內存文
17、件映射視圖if(h_LocalMapView=MapViewOfFile(h_filemap,FILE_MAP_ALL_ACCESS,0,0,0)=NULL)AfxMessageBox("Create Local Map View Error!"); return false;管理代理啟動后,在其內存文件映射視圖中寫入自己的窗口句柄,供各個應用程序實例讀取。監控模塊初始化時,從管理代理的內存文件映射視圖中得到管理代理的窗口句柄,向管理代理的內存文件映射視圖中寫入自己的內存文件映射對象名,并發送請求注冊消息給管理代理。管理代理收到消息后,從自己的內存文件映射視圖中讀出應用程序
18、實例的內存映射文件對象名,創建應用程序實例內存文件映射視圖9。代理和監控模塊的通信通過讀寫內存文件映射視圖和互相發送消息實現。422同步機制管理代理和監控模塊通過對內存映射文件進行讀操作和寫操作來完成數據交換。由于存在多個獨立的應用程序實例進程,它們可 能同時對管理代理進行寫操作。可能存在這樣的情況:當一個應用程序的實例向管理代理的內存文件中寫入數據,并通知管理代理讀取時,另外一個應用程序的實例也在做同樣的寫操作,它寫入的數據將前一次寫入的數據覆蓋了。當管理代理響應消息從內存文件中讀入時,得到的是第二個應用程序實例的數據,第一個應用程序實例寫入的數據已丟失了。在應用程序實例的內存文件上也存在類
19、似的情況:當一個應用程序實例連續向內存文件中寫入時,管理代理可能還來不及對第一次寫入的數據進行讀取,第二次的寫入已經將第一次寫入的內容覆蓋了。在對內存文件的讀寫過程中引入同步機制是必要的。程序中采用的同步機制是信號燈機制9。在管理代理上為內存文件創建信號燈:/*創建信號燈,信號燈名為ProxyMapViewSemaphore ,初始計數為1,最大計數也是1,h_SemAccessMapView為該信號燈的句柄*/h_SemAccessMapView=CreateSemaphore(NULL,1,1,"ProxyMapViewSemaphore"); 在監控模塊中,打開這個信
20、號燈:/*打開名為ProxyMapViewSemaphore 的信號燈,h_SemAccessMapView為信號燈句柄*/h_SemAccessMapView=OpenSemaphore(SEMAPHORE_ALL_ACCESS,false, "ProxyMapViewSemaphore");監控模塊每次對管理代理內存文件寫操作前,均要等待信號燈的信號:/*等待信號燈h_SemAccessMapView的信號,知道信號燈為有信號時才返回*/:WaitForSingleObject(h_SemAccessMapView,INFINITE);/對管理代理內存文件映射的寫操作管
21、理代理在每次對內存文件進行讀操作后,都要增加信號燈的計數:/對內存文件的讀操作/增加信號燈h_SemAccessMapView的計數,每次增加1ReleaseSemaphore(h_SemAccessMapView,1,NULL);5結束語在對SNMP中MIB信息和協議數據單元擴充的基礎上,設計并實現了面向應用軟件的網絡監控系統。該系統提供了對應用程序類中成員變量和成員函數的監控功能。參考文獻:1唐亞哲,張鵬,李增智,等. DIINMS分布智能網絡管理系統的設計與實現J.小型微型計算機系統 ,2002,23(8):926929.2田力威,尹朝萬.基于CORBA的智能網絡管理系統的結構及實現J.小型微型計算機系統,2002,23(7):810813.3HUNTER, PHILIP.Integrated
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國六孔視察窗行業投資前景及策略咨詢研究報告
- 生產橋鋪裝施工方案
- 高考前60天校長動員大會上講話拼搏
- 2025至2030年中國高溫隔熱加熱器數據監測研究報告
- 2025最正規的借款合同范本
- 2025商業租賃合同范本大全
- 2025年石油運輸合同范本
- 2025至2030年中國環氧界面處理劑數據監測研究報告
- 黔江商場格柵施工方案
- 農田水渠硬化施工方案
- 高質量數字化轉型技術解決方案集(2024上半年度)
- 人教版七年級生物上冊第一單元第一章第二節生物的特征課件
- 住房城鄉建設科學技術計劃項目科研開發類申報書
- 廣東省佛山市S6高質量發展聯盟2023-2024學年高一下學期4月期中考試數學
- 道路旅客運輸企業雙重預防機制建設指導手冊
- 智慧農業的支撐技術簡介
- 地下車庫等環氧地坪漆工程投標文件(技術標)
- 雨露計劃補助資金管理辦法
- XXX小學“三會一課”活動記錄
- 政務服務中心物業服務投標方案【新版】(技術方案)
- (高清版)JTG 5142-2019 公路瀝青路面養護技術規范
評論
0/150
提交評論