- 相關(guān)推薦
研究管理代理與監(jiān)控模塊通信設(shè)計
摘要:詳細介紹了面向應(yīng)用軟件的網(wǎng)絡(luò)監(jiān)控系統(tǒng)中管理代理和監(jiān)控模塊通信的設(shè)計與實現(xiàn)過程。包括管理信息存儲的優(yōu)化設(shè)計、內(nèi)存映射文件的存儲數(shù)據(jù)結(jié)構(gòu)設(shè)計、監(jiān)控指令轉(zhuǎn)發(fā)技術(shù)、內(nèi)存映射文件的通信方式、同步機制應(yīng)用等。通過內(nèi)存映射文件方式存儲管理信息,高效地完成了收集各應(yīng)用程序?qū)嵗谋O(jiān)控信息任務(wù),并實現(xiàn)了監(jiān)控信息的存儲、共享和監(jiān)控模塊與管理代理間實時信息交換的功能。?關(guān)鍵詞:優(yōu)化存儲;內(nèi)存文件映射;消息機制;同步機制?
隨著網(wǎng)絡(luò)規(guī)模增大,網(wǎng)絡(luò)結(jié)構(gòu)及網(wǎng)絡(luò)應(yīng)用日漸復(fù)雜,傳統(tǒng)的物理安全技術(shù)和措施已經(jīng)不足以保證信息系統(tǒng)的安全,因此網(wǎng)絡(luò)管理系統(tǒng)作為網(wǎng)絡(luò)安全運行的保證,其重要性越來越突出。為了提高計算機網(wǎng)絡(luò)信息安全,許多相關(guān)的網(wǎng)絡(luò)安全產(chǎn)品被開發(fā),但大多是基于網(wǎng)絡(luò)硬件設(shè)備,如路由器、集線器、交換機等,而對網(wǎng)絡(luò)應(yīng)用軟件的研究和開發(fā)相對較少[1~4]。為了保證網(wǎng)絡(luò)環(huán)境中的應(yīng)用程序正常高效地運行,筆者設(shè)計了基于SNMP的ASNMS(Application Software Net Monitoring System,網(wǎng)絡(luò)應(yīng)用軟件監(jiān)控系統(tǒng))。該系統(tǒng)選擇運行于網(wǎng)絡(luò)環(huán)境中的應(yīng)用程序為研究對象[5,6]。?
1網(wǎng)絡(luò)應(yīng)用軟件監(jiān)控系統(tǒng)(ASNMS)簡介?
ASNMS的主要監(jiān)控目標是網(wǎng)絡(luò)中的應(yīng)用軟件,通過及時獲取軟件中重要變量值(如系統(tǒng)配置、狀態(tài)指示等),從而及時了解整個網(wǎng)絡(luò)中應(yīng)用程序的狀態(tài),并且還可以通過管理站點對各受控站點中的應(yīng)用程序進行控制操作,提高整個網(wǎng)絡(luò)和應(yīng)用系統(tǒng)的安全性。?該網(wǎng)絡(luò)應(yīng)用軟件監(jiān)控系統(tǒng)主要有三個模塊[5,6]:?
(1)管理站點主程序。該程序在管理站點上運行。通過該程序,管理站點可以使用UDP/IP協(xié)議與管理范圍內(nèi)的所有受控站點進行通信,收集網(wǎng)絡(luò)應(yīng)用程序的監(jiān)控信息,并下發(fā)各種控制命令。?
(2)管理代理。每一個受控站點上運行一個管理代理程序(有且僅有一個)。管理代理是系統(tǒng)的通信中心。一方面通過內(nèi)存映射文件與受控站點上的各應(yīng)用程序?qū)嵗M行通信,收集各應(yīng)用程序?qū)嵗谋O(jiān)控信息;另一方面通過UDP協(xié)議與管理站點通信,發(fā)送受控站點的管理信息以及轉(zhuǎn)發(fā)管理站點的控制信息。?
(3)監(jiān)控模塊。該模塊是供軟件開發(fā)人員使用的一個通用接口模塊。它負責從受控應(yīng)用程序中獲取監(jiān)控信息,發(fā)送到管理站點,并且也能接收從管理代理轉(zhuǎn)發(fā)的管理站點命令,對受控應(yīng)用程序執(zhí)行一定的控制操作。從結(jié)構(gòu)上來看,監(jiān)控模塊附屬于受控應(yīng)用程序,但它以單獨的線程形式存在。
?
2管理信息存儲的設(shè)計?
為了監(jiān)控模塊工作的需要,同時為了能更方便地將監(jiān)控信息傳送給管理代理,監(jiān)控模塊需要將監(jiān)控信息以一定的形式存儲起來。監(jiān)控模塊監(jiān)控的目標是應(yīng)用程序中的變量。由于現(xiàn)在軟件開發(fā)大多使用的是面向?qū)ο蟮姆椒,在其程序中各種變量是有層次結(jié)構(gòu)關(guān)系的,這一點必須在監(jiān)控信息中體現(xiàn)出來[7]。監(jiān)控信息從邏輯上看應(yīng)該是以樹的形式存在,并且存儲的是各種變量的信息,而變量的長度是不相同的,在這棵樹中各個節(jié)點的空間大小有可能不相同。由此看來,無論是從存儲內(nèi)容上還是從邏輯結(jié)構(gòu)上看,監(jiān)控信息的存儲結(jié)構(gòu)均是相對較為復(fù)雜的。下面三種設(shè)計方案可以滿足這樣的要求:?
(1)在監(jiān)控模塊內(nèi)存空間內(nèi)生成一棵二叉樹。這是最常規(guī)的存儲方法。在此情況下,只需要設(shè)計一個較為合理的樹結(jié)構(gòu),二叉樹就能直接存儲在監(jiān)控模塊的內(nèi)存空間中,訪問方便。同時因為在許多語言中均有任意類型的數(shù)據(jù)類型,由此可以將不同數(shù)據(jù)類型的數(shù)據(jù)方便地存儲在一種數(shù)據(jù)結(jié)構(gòu)中。但是由于這棵樹存在于監(jiān)控模塊的內(nèi)存空間中,不方便管理代理程序?qū)ζ渥x取,監(jiān)控模塊還需要通過一定的方法將該樹傳送給管理代理[4,7]。?
優(yōu)點:實現(xiàn)簡單,監(jiān)控模塊可以很方便地對其進行讀寫操作。?
缺點:不方便管理代理程序?qū)ΡO(jiān)控信息讀取,需要使用其他方法將信息傳送給管理代理。?
(2)將監(jiān)控信息存儲在磁盤文件中。為了解決管理代理和監(jiān)控模塊共享監(jiān)控信息的問題,監(jiān)控模塊可以將監(jiān)控信息存儲為磁盤文件形式。在此情況下,需要設(shè)計一套完整合理的文件空間使用策略,保證能夠完整地存儲監(jiān)控信息。由于在Windows程序中采用了虛擬內(nèi)存策略,不同應(yīng)用程序內(nèi)存空間是不同的,即使某應(yīng)用程序獲取了另一個程序中的某個指針,也不能正確地訪問到其數(shù)據(jù)。在對變量值進行存儲時,一定要注意不能存儲有關(guān)變量的指針信息,而應(yīng)該想辦法存儲其中變量的實際數(shù)據(jù)[8]。同時因為是將監(jiān)控信息存儲于磁盤上,需要采取一定的措施盡量避免出現(xiàn)垃圾文件的情況,同時還要防止在工作狀態(tài)下用戶有意或無意地修改、刪除該文件。?
優(yōu)點:多個程序可以方便地共享數(shù)據(jù)。?
缺點:實現(xiàn)較復(fù)雜,容易產(chǎn)生垃圾文件,容易泄漏和丟失監(jiān)控信息。?
(3)將監(jiān)控信息存儲在內(nèi)存文件映射中。這是對方案(2)的改進。方案(2)將監(jiān)控信息存儲于磁盤文件中,由此使得容易產(chǎn)生垃圾文件、容易泄漏和丟失監(jiān)控信息。那么如果將監(jiān)控信息直接存儲在內(nèi)存當中呢?采用內(nèi)存映射文件是一個很好的解決辦法。應(yīng)用程序在需要時在內(nèi)存中開辟一定的空間存儲數(shù)據(jù),當應(yīng)用程序關(guān)閉后,由于操作系統(tǒng)的內(nèi)存管理機制,內(nèi)存文件將自動被回收,安全性高。但是在生成內(nèi)存映射文件時,必須要指定文件的大小,此時如果處理不當將可能出現(xiàn)存儲空間不夠用的情況[4,8]。?
優(yōu)點:多個程序可以方便地共享數(shù)據(jù),數(shù)據(jù)不易泄漏,安全性高。?
缺點:實現(xiàn)較復(fù)雜,必須指定文件大小,處理不當可能出現(xiàn)空間不夠用的情況。?
綜合三種方案,方案(3)是最合適的。只要指定足夠的文件大小,它不僅滿足監(jiān)控模塊存儲管理信息的需要,信息安全性高,同時可方便地實現(xiàn)監(jiān)控模塊與管理代理之間實時信息交換功能,從而解決它們之間的通信問題! 3管理代理與監(jiān)控模塊通信的設(shè)計?
3.1管理代理與監(jiān)控模塊間通信?
通信包括系統(tǒng)初始化連接建立、命令轉(zhuǎn)發(fā)和自定義消息。?
(1)系統(tǒng)初始化連接建立。管理代理隨受控站點啟動后,必須接收各個應(yīng)用程序?qū)嵗谋O(jiān)控模塊的注冊信息,與監(jiān)控模塊建立初始連接。?
(2)命令轉(zhuǎn)發(fā)。管理代理接收到管理站點發(fā)送的UDP報文后,先識別該報文是發(fā)送給哪個監(jiān)控模塊的,然后通過Windows消息形式發(fā)送給指定的監(jiān)控模塊。?
(3)管理代理與監(jiān)控模塊之間約定一系列自定義消息,并向Windows注冊,保證雙方能夠正確地通過自定義消息進行通信。?
3.2監(jiān)控信息的收集與組織?
在受控站點上,管理代理與多個應(yīng)用程序?qū)嵗谋O(jiān)控模塊之間是通過內(nèi)存映射文件進行通信的。監(jiān)控信息存儲在內(nèi)存映射文件中。?
(1)監(jiān)控信息收集就是對監(jiān)控模塊對應(yīng)的內(nèi)存映射文件進行遍歷。通過遍歷獲得最新的被監(jiān)控應(yīng)用程序的狀態(tài)、監(jiān)控變量的值等。?
(2)監(jiān)控信息收集時,需提供有效的同步機制,防止管理代理與監(jiān)控模塊同時訪問同一個監(jiān)控信息文件時出錯
【研究管理代理與監(jiān)控模塊通信設(shè)計】相關(guān)文章:
PROFIBUS-DP轉(zhuǎn)CAN通信接口模塊的設(shè)計11-22
軌道交通監(jiān)控系統(tǒng)聯(lián)動模塊設(shè)計論文11-20
基于CC1000的射頻光傳輸模塊FSK通信設(shè)計03-07
基于VB的分布式監(jiān)控系統(tǒng)通信設(shè)計03-18
全通用關(guān)系型表格打印模塊設(shè)計研究03-22
ERP中的物流模塊研究12-04
通信電源的運行管理與應(yīng)用研究03-18