本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及計(jì)算機(jī)應(yīng)用程序技術(shù)領(lǐng)域,尤其涉及計(jì)算機(jī)應(yīng)用程序監(jiān)控方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和社會(huì)信息化的飛速發(fā)展,企業(yè)內(nèi)部的軟硬件設(shè)備與外部的網(wǎng)絡(luò)構(gòu)成了一個(gè)復(fù)雜而龐大的信息系統(tǒng)。為了確保應(yīng)用系統(tǒng)的安全,我們需要對應(yīng)用系統(tǒng)的日常運(yùn)行進(jìn)行監(jiān)控。
然而,現(xiàn)有的計(jì)算機(jī)應(yīng)用程序監(jiān)控方式通常需要在應(yīng)用系統(tǒng)中引入軟件開發(fā)工具包(softwaredevelopmentkit),并且在需要監(jiān)控的地方手動(dòng)植入監(jiān)控代碼來實(shí)現(xiàn)對應(yīng)用系統(tǒng)的運(yùn)行數(shù)據(jù)進(jìn)行監(jiān)控的目的,這種監(jiān)控方式的監(jiān)控代碼和待監(jiān)控信息的耦合度高,無法實(shí)現(xiàn)靈活配置監(jiān)控規(guī)則的需求。
技術(shù)實(shí)現(xiàn)要素:
本申請的目的在于提出一種改進(jìn)的計(jì)算機(jī)應(yīng)用程序監(jiān)控方法和裝置,來解決以上背景技術(shù)部分提到的技術(shù)問題。
第一方面,本申請?zhí)峁┝艘环N計(jì)算機(jī)應(yīng)用程序監(jiān)控方法,所述方法包括:獲取待監(jiān)控信息;創(chuàng)建所述待監(jiān)控信息的應(yīng)用程序編程接口;基于所述應(yīng)用程序編程接口,將監(jiān)控代碼植入所述待監(jiān)控信息中,生成監(jiān)控代碼植入程序;運(yùn)行所述監(jiān)控代碼植入程序,生成監(jiān)控?cái)?shù)據(jù)。
在一些實(shí)施例中,所述在獲取待監(jiān)控信息之前,所述方法還包括:啟動(dòng)java虛擬機(jī)的信息收集線程,采集所述java虛擬機(jī)的運(yùn)行信息。
在一些實(shí)施例中,所述將監(jiān)控代碼植入所述待監(jiān)控信息中,生成監(jiān)控代碼植入程序,包括:利用java字節(jié)碼操控框架將監(jiān)控代碼植入所述待監(jiān)控信息中,生成監(jiān)控代碼植入程序。
在一些實(shí)施例中,所述方法還包括:針對所述監(jiān)控代碼,添加控制所述監(jiān)控代碼的控制開關(guān)。
在一些實(shí)施例中,所述將監(jiān)控代碼植入所述待監(jiān)控信息中,生成監(jiān)控代碼植入程序包括:在待監(jiān)控信息中添加第一監(jiān)控代碼塊和第二監(jiān)控代碼塊;以及在所述第一監(jiān)控代碼塊中記錄訪問開始時(shí)間,在所述第二監(jiān)控代碼塊中記錄訪問結(jié)束時(shí)間。
在一些實(shí)施例中,所述運(yùn)行所述監(jiān)控代碼植入程序,生成監(jiān)控?cái)?shù)據(jù),包括:記錄所述訪問開始時(shí)間到所述訪問結(jié)束時(shí)間之間的訪問日志,收集并分析所述訪問日志,生成監(jiān)控?cái)?shù)據(jù)。
第二方面,本申請?zhí)峁┝艘环N計(jì)算機(jī)應(yīng)用程序監(jiān)控裝置,所述裝置包括:獲取單元,配置用于獲取待監(jiān)控信息;創(chuàng)建單元,配置用于創(chuàng)建所述待監(jiān)控信息的應(yīng)用程序編程接口;植入單元,配置用于基于所述應(yīng)用程序編程接口,將監(jiān)控代碼植入所述待監(jiān)控信息中,生成監(jiān)控代碼植入程序;生成單元,配置用于運(yùn)行所述監(jiān)控代碼植入程序,生成監(jiān)控?cái)?shù)據(jù)。
在一些實(shí)施例中,所述裝置還包括:采集單元,配置用于啟動(dòng)java虛擬機(jī)的信息收集線程,采集所述java虛擬機(jī)的運(yùn)行信息。
在一些實(shí)施例中,所述植入單元進(jìn)一步配置用于:利用java字節(jié)碼操控框架將監(jiān)控代碼植入所述待監(jiān)控信息中,生成監(jiān)控代碼植入程序。
在一些實(shí)施例中,所述裝置還包括:添加單元,配置用于針對所述監(jiān)控代碼,添加控制所述監(jiān)控代碼的控制開關(guān)。
在一些實(shí)施例中,所述植入單元包括:添加模塊,配置用于在待監(jiān)控信息中添加第一監(jiān)控代碼塊和第二監(jiān)控代碼塊;記錄模塊,配置用于在所述第一監(jiān)控代碼塊中記錄訪問開始時(shí)間,在所述第二監(jiān)控代碼塊中記錄訪問結(jié)束時(shí)間。
在一些實(shí)施例中,所述生成單元進(jìn)一步配置用于:記錄所述訪問開始時(shí)間到所述訪問結(jié)束時(shí)間之間的訪問日志,收集并分析所述訪問日志,生成監(jiān)控?cái)?shù)據(jù)。
本申請?zhí)峁┑挠?jì)算機(jī)應(yīng)用程序監(jiān)控方法和裝置,通過對獲取到的 待監(jiān)控信息創(chuàng)建應(yīng)用程序編程接口,而后基于應(yīng)用程序編程接口,將監(jiān)控代碼植入到待監(jiān)控信息中,最后運(yùn)行監(jiān)控代碼植入后的程序,得到監(jiān)控?cái)?shù)據(jù),從而有效的利用了創(chuàng)建應(yīng)用程序編程接口的java代理技術(shù),實(shí)現(xiàn)了靈活配置監(jiān)控規(guī)則的需求。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實(shí)施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1是本申請可以應(yīng)用于其中的示例性系統(tǒng)架構(gòu)圖;
圖2是根據(jù)本申請的計(jì)算機(jī)應(yīng)用程序監(jiān)控方法的一個(gè)實(shí)施例的流程圖;
圖3是根據(jù)本申請的計(jì)算機(jī)應(yīng)用程序監(jiān)控方法的又一個(gè)實(shí)施例的流程圖;
圖4是根據(jù)本申請的計(jì)算機(jī)應(yīng)用程序監(jiān)控裝置的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖;
圖5是適于用來實(shí)現(xiàn)本申請實(shí)施例的服務(wù)器的計(jì)算機(jī)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對本申請作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與有關(guān)發(fā)明相關(guān)的部分。
需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本申請。
圖1示出了可以應(yīng)用本申請的計(jì)算機(jī)應(yīng)用程序監(jiān)控方法或計(jì)算機(jī)應(yīng)用程序監(jiān)控裝置的實(shí)施例的示例性系統(tǒng)架構(gòu)100。
如圖1所示,系統(tǒng)架構(gòu)100可以包括電子設(shè)備101和102,網(wǎng)絡(luò)103和監(jiān)控服務(wù)器104。網(wǎng)絡(luò)103用以在電子設(shè)備101、102和監(jiān)控服 務(wù)器104之間提供通信鏈路的介質(zhì)。網(wǎng)絡(luò)103可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
監(jiān)控服務(wù)器104可以是提供各種服務(wù)的服務(wù)器,例如對在電子設(shè)備102上搜索的網(wǎng)址url進(jìn)行監(jiān)控和對電子設(shè)備101上的結(jié)構(gòu)化查詢語言sql進(jìn)行跟蹤的后臺(tái)監(jiān)控服務(wù)器。后臺(tái)監(jiān)控服務(wù)器可以運(yùn)行監(jiān)控代碼植入程序,并生成監(jiān)控?cái)?shù)據(jù)。
需要說明的是,本申請實(shí)施例所提供的計(jì)算機(jī)應(yīng)用程序監(jiān)控方法一般由監(jiān)控服務(wù)器104執(zhí)行,相應(yīng)地,計(jì)算機(jī)應(yīng)用程序監(jiān)控裝置一般設(shè)置于監(jiān)控服務(wù)器104中。
應(yīng)該理解,圖1中的電子設(shè)備、網(wǎng)絡(luò)和監(jiān)控服務(wù)器的數(shù)目僅僅是示意性的。根據(jù)實(shí)現(xiàn)需要,可以具有任意數(shù)目的電子設(shè)備、網(wǎng)絡(luò)和監(jiān)控服務(wù)器。
繼續(xù)參考圖2,示出了根據(jù)本申請的計(jì)算機(jī)應(yīng)用程序監(jiān)控方法的一個(gè)實(shí)施例的流程200。所述的計(jì)算機(jī)應(yīng)用程序監(jiān)控方法,包括以下步驟:
步驟201,獲取待監(jiān)控信息。
在本實(shí)施例中,計(jì)算機(jī)應(yīng)用程序監(jiān)控方法運(yùn)行于其上的電子設(shè)備(例如圖1所示的監(jiān)控服務(wù)器104)可以通過有線連接方式或者無線連接方式獲取待監(jiān)控信息,其中,上述待監(jiān)控信息可以是url(uniformresourcelocator,統(tǒng)一資源定位符)、也可以是sql(structuredquerylanguage,結(jié)構(gòu)化查詢語言)、還可以是類(class)的方法和性能。
在本實(shí)施例中,上述電子設(shè)備可以首先啟動(dòng)java代理技術(shù),java代理技術(shù)的啟動(dòng)方式可以包括:在java虛擬機(jī)(jvm,javavirtualmachine)啟動(dòng)時(shí)啟動(dòng)和在java虛擬機(jī)運(yùn)行過程中啟動(dòng)。其中,java虛擬機(jī)是運(yùn)行所有java程序的抽象計(jì)算機(jī),它屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使得java程序只需生成在java虛擬機(jī)上運(yùn)行的字節(jié)碼,就可以在多種平臺(tái)上不加修改地運(yùn)行。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,在獲取待監(jiān)控信息之前,上述電子設(shè)備可以在啟動(dòng)java代理技術(shù)的同時(shí)啟動(dòng)java虛擬機(jī)的信息 收集線程,并采集上述java虛擬機(jī)的運(yùn)行信息。在java虛擬機(jī)中可以同時(shí)運(yùn)行多個(gè)線程,每個(gè)線程可以包含多個(gè)屬性,例如標(biāo)識(shí)、名稱和優(yōu)先級(jí)等,上述電子設(shè)備可以通過這些屬性識(shí)別線程、觀察線程狀態(tài)、控制線程優(yōu)先級(jí)等。上述運(yùn)行信息可以包括但不限于:上述java虛擬機(jī)的內(nèi)部存儲(chǔ)器信息、垃圾回收狀態(tài)、輸入/輸出(i/o,input/output)端口的狀態(tài)、中央處理器(cpu,centralprocessingunit)信息、網(wǎng)絡(luò)狀態(tài)信息和帶寬信息。
步驟202,創(chuàng)建待監(jiān)控信息的應(yīng)用程序編程接口。
在本實(shí)施例中,上述電子設(shè)備可以利用java代理技術(shù)創(chuàng)建上述待監(jiān)控信息的應(yīng)用程序編程接口。其中,上述應(yīng)用程序編程接口(api,applicationprogramminginterface)可以提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。
在本實(shí)施例中,當(dāng)上述待監(jiān)控信息是類的方法和性能時(shí),上述應(yīng)用程序編程接口可以是類文件轉(zhuǎn)換器(classfiletransformer)接口。上述電子設(shè)備可以在加載新增加的類或重新加載類時(shí)調(diào)用上述類文件轉(zhuǎn)換器接口。
步驟203,基于應(yīng)用程序編程接口,將監(jiān)控代碼植入待監(jiān)控信息中,生成監(jiān)控代碼植入程序。
在本實(shí)施例中,基于上述通過java代理技術(shù)創(chuàng)建的應(yīng)用程序編程接口,上述電子設(shè)備可以利用java字節(jié)碼修改技術(shù)將監(jiān)控代碼植入到上述待監(jiān)控信息中,從而生成監(jiān)控代碼植入程序。
在本實(shí)施例中,當(dāng)上述java代理技術(shù)是在java虛擬機(jī)運(yùn)行過程中啟動(dòng)時(shí),上述電子設(shè)備可以針對java代理技術(shù)啟動(dòng)之前的、java虛擬機(jī)上的待監(jiān)控信息添加上述應(yīng)用程序編程接口,并將監(jiān)控代碼植入到上述待監(jiān)控信息中,生成監(jiān)控代碼植入程序。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述電子設(shè)備可以利用java字節(jié)碼操控框架(asm技術(shù))將監(jiān)控代碼植入到上述待監(jiān)控信息中。其中,java字節(jié)碼操控框架可以被用來動(dòng)態(tài)生成類或增強(qiáng)既有類的功能,可以對類的二進(jìn)制文件進(jìn)行再次編碼或修改,并且可以根據(jù) 業(yè)務(wù)需要選擇性的在需要修改的待監(jiān)控信息中添加代碼或修改上述待監(jiān)控信息從而達(dá)到改變類行為的目的。作為示例,上述電子設(shè)備可以利用上述java字節(jié)碼操控框架在類文件中讀取類名稱、方法、屬性以及java字節(jié)碼等信息,之后可以改變上述類文件的類行為,還可以分析上述類文件的類信息。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述電子設(shè)備可以針對上述監(jiān)控代碼添加控制開關(guān)。作為示例,待監(jiān)控信息可以是飯卡充值信息,若該食堂只有周二和周五提供飯卡充值服務(wù),則上述電子設(shè)備在對上述待監(jiān)控信息進(jìn)行監(jiān)控時(shí),可以在周二和周五開啟上述控制開關(guān),從而對飯卡充值服務(wù)進(jìn)行監(jiān)控,并在周一、周三、周四和周末關(guān)閉上述控制開關(guān)。
在本實(shí)施例中,對于類的方法和性能的監(jiān)控,上述電子設(shè)備可以利用java字節(jié)碼操控框架的classvisitor接口和methodvisitor接口動(dòng)態(tài)的將監(jiān)控代碼植入上述待監(jiān)控信息中,其中,classvisitor接口可以在讀取到類的字節(jié)碼時(shí)將監(jiān)控代碼植入到上述待監(jiān)控的類字節(jié)碼中;methodvisitor接口可以在讀取到類的方法時(shí)將監(jiān)控代碼植入到上述待監(jiān)控的類的方法中。
步驟204,運(yùn)行監(jiān)控代碼植入程序,生成監(jiān)控?cái)?shù)據(jù)。
在本實(shí)施例中,上述電子設(shè)備運(yùn)行步驟203中生成的監(jiān)控代碼植入程序,并生成監(jiān)控?cái)?shù)據(jù)。其中,上述監(jiān)控?cái)?shù)據(jù)可以包括但不限于:開始時(shí)間、結(jié)束時(shí)間、運(yùn)行時(shí)間和運(yùn)行次數(shù),其中,開始時(shí)間可以是第一監(jiān)控代碼塊中記錄的訪問開始時(shí)間,結(jié)束時(shí)間可以是第二監(jiān)控代碼塊中記錄的訪問結(jié)束時(shí)間,運(yùn)行時(shí)間可以是從上述訪問開始時(shí)間到上述訪問結(jié)束時(shí)間之間的程序運(yùn)行時(shí)間,運(yùn)行次數(shù)可以是上述待監(jiān)控信息運(yùn)行的次數(shù),待監(jiān)控信息運(yùn)行一次也可以是第二監(jiān)控代碼塊運(yùn)行一次。
本申請的上述實(shí)施例提供的方法通過將監(jiān)控代碼植入到待監(jiān)控信息中,從而對待監(jiān)控信息進(jìn)行監(jiān)控,并得到監(jiān)控?cái)?shù)據(jù),實(shí)現(xiàn)了靈活配置監(jiān)控規(guī)則的需求。
進(jìn)一步參考圖3,其示出了計(jì)算機(jī)應(yīng)用程序監(jiān)控方法的又一個(gè)實(shí)施例的流程300。該計(jì)算機(jī)應(yīng)用程序監(jiān)控方法的流程300,包括以下步驟:
步驟301,獲取待監(jiān)控信息。
在本實(shí)施例中,計(jì)算機(jī)應(yīng)用程序監(jiān)控方法運(yùn)行于其上的電子設(shè)備可以通過有線連接方式或者無線連接方式獲取待監(jiān)控信息,其中,上述待監(jiān)控信息可以是url、也可以是sql、還可以是類的方法和性能。
步驟302,創(chuàng)建待監(jiān)控信息的應(yīng)用程序編程接口。
在本實(shí)施例中,上述電子設(shè)備可以通過java代理技術(shù)創(chuàng)建上述待監(jiān)控信息的應(yīng)用程序編程接口,當(dāng)上述待監(jiān)控信息是類的方法和性能時(shí),上述應(yīng)用程序編程接口可以是類文件轉(zhuǎn)換器接口。
步驟303,基于應(yīng)用程序編程接口,在待監(jiān)控信息中添加第一監(jiān)控代碼塊和第二監(jiān)控代碼塊。
在本實(shí)施例中,基于上述通過java代理技術(shù)創(chuàng)建的應(yīng)用程序編程接口,上述電子設(shè)備可以在待監(jiān)控信息中添加第一監(jiān)控代碼塊(例如try代碼塊)和第二監(jiān)控代碼塊(例如finally代碼塊)。
步驟304,在第一監(jiān)控代碼塊中記錄訪問開始時(shí)間,在第二監(jiān)控代碼塊中記錄訪問結(jié)束時(shí)間。
在本實(shí)施例中,上述電子設(shè)備可以在第一監(jiān)控代碼塊中記錄監(jiān)控代碼訪問上述待監(jiān)控信息(監(jiān)控代碼植入程序運(yùn)行)的開始時(shí)間,并在第二監(jiān)控代碼塊中記錄監(jiān)控代碼訪問上述待監(jiān)控信息的結(jié)束時(shí)間。
步驟305,記錄訪問開始時(shí)間到訪問結(jié)束時(shí)間之間的訪問日志,收集并分析訪問日志,生成監(jiān)控?cái)?shù)據(jù)。
在本實(shí)施例中,基于在待監(jiān)控信息中添加的第一監(jiān)控代碼塊中所記錄的監(jiān)控代碼訪問上述待監(jiān)控信息的開始時(shí)間,以及在待監(jiān)控信息中添加的第二監(jiān)控代碼塊中所記錄的監(jiān)控代碼訪問上述待監(jiān)控信息的結(jié)束時(shí)間,上述電子設(shè)備可以記錄從上述訪問開始時(shí)間到上述訪問結(jié)束時(shí)間之間的訪問日志,并可以利用日志收集器收集上述訪問日志,之后可以對上述訪問日志進(jìn)行分析,最后可以生成監(jiān)控?cái)?shù)據(jù)。其中,監(jiān)控?cái)?shù)據(jù)可以包括但不限于:開始時(shí)間、結(jié)束時(shí)間、運(yùn)行時(shí)間和運(yùn)行 次數(shù)。
從圖3中可以看出,與圖2對應(yīng)的實(shí)施例相比,本實(shí)施例中的計(jì)算機(jī)應(yīng)用程序監(jiān)控方法的流程300突出了將監(jiān)控代碼植入待監(jiān)控信息的步驟和運(yùn)行監(jiān)控代碼植入程序的步驟,從而實(shí)現(xiàn)了配置監(jiān)控規(guī)則的靈活性。
進(jìn)一步參考圖4,作為對上述各圖所示方法的實(shí)現(xiàn),本申請?zhí)峁┝艘环N計(jì)算機(jī)應(yīng)用程序監(jiān)控裝置的一個(gè)實(shí)施例,該裝置實(shí)施例與圖2所示的方法實(shí)施例相對應(yīng),該裝置具體可以應(yīng)用于各種電子設(shè)備中。
如圖4所示,本實(shí)施例所述的計(jì)算機(jī)應(yīng)用程序監(jiān)控裝置400包括:獲取單元401、創(chuàng)建單元402、植入單元403和生成單元404。其中,獲取單元401配置用于獲取待監(jiān)控信息;創(chuàng)建單元402配置用于創(chuàng)建上述待監(jiān)控信息的應(yīng)用程序編程接口;植入單元403配置用于基于上述應(yīng)用程序編程接口,將監(jiān)控代碼植入上述待監(jiān)控信息中,生成監(jiān)控代碼植入程序;而生成單元404配置用于運(yùn)行上述監(jiān)控代碼植入程序,生成監(jiān)控?cái)?shù)據(jù)。
在本實(shí)施例中,計(jì)算機(jī)應(yīng)用程序監(jiān)控裝置400的獲取單元401可以通過有線連接方式或者無線連接方式獲取待監(jiān)控信息,其中,上述待監(jiān)控信息可以是url、也可以是sql、還可以是類的方法和性能。
在本實(shí)施例中,基于獲取單元401獲取的待監(jiān)控信息,上述創(chuàng)建單元402可以通過java代理技術(shù)創(chuàng)建上述待監(jiān)控信息的應(yīng)用程序編程接口。當(dāng)上述待監(jiān)控信息是類的方法和性能時(shí),上述應(yīng)用程序編程接口可以是類文件轉(zhuǎn)換器接口。
在本實(shí)施例中,基于上述創(chuàng)建單元402通過java代理技術(shù)創(chuàng)建的應(yīng)用程序編程接口,計(jì)算機(jī)應(yīng)用程序監(jiān)控裝置400的植入單元403可以將監(jiān)控代碼植入到上述待監(jiān)控信息中,從而生成監(jiān)控代碼植入程序。
在本實(shí)施例中,上述生成單元404運(yùn)行上述植入單元403生成的監(jiān)控代碼植入程序,并生成監(jiān)控?cái)?shù)據(jù)。其中,上述監(jiān)控?cái)?shù)據(jù)可以包括但不限于:開始時(shí)間、結(jié)束時(shí)間、運(yùn)行時(shí)間和運(yùn)行次數(shù)。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述裝置還包括:采集單 元(圖中未示出),上述采集單元可以在啟動(dòng)java代理技術(shù)的同時(shí)啟動(dòng)java虛擬機(jī)的信息收集線程,并采集上述java虛擬機(jī)的運(yùn)行信息,其中,上述運(yùn)行信息可以包括但不限于:上述java虛擬機(jī)的內(nèi)部存儲(chǔ)器信息、垃圾回收狀態(tài)、輸入/輸出端口的狀態(tài)、中央處理器的信息、網(wǎng)絡(luò)狀態(tài)信息和帶寬信息。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述植入單元403可以利用java字節(jié)碼操控框架(asm技術(shù))將監(jiān)控代碼植入所述待監(jiān)控信息中,生成監(jiān)控代碼植入程序。其中,java字節(jié)碼操控框架可以被用來動(dòng)態(tài)生成類或增強(qiáng)既有類的功能,可以對類的二進(jìn)制文件進(jìn)行再次編碼或修改,并且可以根據(jù)業(yè)務(wù)需要選擇性的在需要修改的待監(jiān)控信息中添加代碼或修改上述待監(jiān)控信息從而達(dá)到改變類行為的目的。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述裝置還包括:添加單元(圖中未示出),上述添加單元可以針對上述監(jiān)控代碼添加控制開關(guān)。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述植入單元403包括:添加模塊(圖中未示出)和記錄模塊(圖中未示出)。基于上述通過java代理技術(shù)創(chuàng)建的應(yīng)用程序編程接口,上述添加模塊可以利用java字節(jié)碼操控框架在待監(jiān)控信息中添加第一監(jiān)控代碼塊和第二監(jiān)控代碼塊;上述記錄模塊可以在第一監(jiān)控代碼塊中記錄監(jiān)控代碼訪問上述待監(jiān)控信息的開始時(shí)間,并在第二監(jiān)控代碼塊中記錄監(jiān)控代碼訪問上述待監(jiān)控信息的結(jié)束時(shí)間。
在本實(shí)施例的一些可選的實(shí)現(xiàn)方式中,上述生成單元404可以記錄從上述訪問開始時(shí)間到上述訪問結(jié)束時(shí)間之間的訪問日志,并可以利用日志收集器收集上述訪問日志,之后可以對上述訪問日志進(jìn)行分析,最后可以生成監(jiān)控?cái)?shù)據(jù)。其中,監(jiān)控?cái)?shù)據(jù)可以包括但不限于:開始時(shí)間、結(jié)束時(shí)間、運(yùn)行時(shí)間和運(yùn)行次數(shù)。
下面參考圖5,其示出了適于用來實(shí)現(xiàn)本申請實(shí)施例的監(jiān)控服務(wù)器的計(jì)算機(jī)系統(tǒng)500的結(jié)構(gòu)示意圖。
如圖5所示,計(jì)算機(jī)系統(tǒng)500包括中央處理單元(cpu)501,其可以根據(jù)存儲(chǔ)在只讀存儲(chǔ)器(rom)502中的程序或者從存儲(chǔ)部分506 加載到隨機(jī)訪問存儲(chǔ)器(ram)503中的程序而執(zhí)行各種適當(dāng)?shù)膭?dòng)作和處理。在ram503中,還存儲(chǔ)有系統(tǒng)500操作所需的各種程序和數(shù)據(jù)。cpu501、rom502以及ram503通過總線504彼此相連。輸入/輸出(i/o)接口505也連接至總線504。
以下部件連接至i/o接口505:包括硬盤等的存儲(chǔ)部分506;以及包括諸如lan卡、調(diào)制解調(diào)器等的網(wǎng)絡(luò)接口卡的通信部分507。通信部分507經(jīng)由諸如因特網(wǎng)的網(wǎng)絡(luò)執(zhí)行通信處理。驅(qū)動(dòng)器508也根據(jù)需要連接至i/o接口505??刹鹦督橘|(zhì)509,諸如磁盤、光盤、磁光盤、半導(dǎo)體存儲(chǔ)器等等,根據(jù)需要安裝在驅(qū)動(dòng)器508上,以便于從其上讀出的計(jì)算機(jī)程序根據(jù)需要被安裝入存儲(chǔ)部分506。
特別地,根據(jù)本公開的實(shí)施例,上文參考流程圖描述的過程可以被實(shí)現(xiàn)為計(jì)算機(jī)軟件程序。例如,本公開的實(shí)施例包括一種計(jì)算機(jī)程序產(chǎn)品,其包括有形地包含在機(jī)器可讀介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包含用于執(zhí)行流程圖所示的方法的程序代碼。在這樣的實(shí)施例中,該計(jì)算機(jī)程序可以通過通信部分507從網(wǎng)絡(luò)上被下載和安裝,和/或從可拆卸介質(zhì)509被安裝。在該計(jì)算機(jī)程序被中央處理單元(cpu)501執(zhí)行時(shí),執(zhí)行本申請的方法中限定的上述功能。
附圖中的流程圖和框圖,圖示了按照本申請各種實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
描述于本申請實(shí)施例中所涉及到的單元可以通過軟件的方式實(shí)現(xiàn),也可以通過硬件的方式來實(shí)現(xiàn)。所描述的單元也可以設(shè)置在處理 器中,例如,可以描述為:一種處理器包括獲取單元、創(chuàng)建單元、植入單元和生成單元。其中,這些單元的名稱在某種情況下并不構(gòu)成對該單元本身的限定。例如,獲取單元還可以被描述為“待監(jiān)控信息獲取單元”。
作為另一方面,本申請還提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),該非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)可以是上述實(shí)施例中上述裝置中所包含的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì);也可以是單獨(dú)存在,未裝配入終端中的非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。上述非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有一個(gè)或者多個(gè)程序,當(dāng)上述一個(gè)或者多個(gè)程序被一個(gè)設(shè)備執(zhí)行時(shí),使得上述設(shè)備:獲取待監(jiān)控信息;創(chuàng)建所述待監(jiān)控信息的應(yīng)用程序編程接口;基于所述應(yīng)用程序編程接口,將監(jiān)控代碼植入所述待監(jiān)控信息中,生成監(jiān)控代碼植入程序;運(yùn)行所述監(jiān)控代碼植入程序,生成監(jiān)控?cái)?shù)據(jù)。
以上描述僅為本申請的較佳實(shí)施例以及對所運(yùn)用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時(shí)也應(yīng)涵蓋在不脫離所述發(fā)明構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進(jìn)行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術(shù)特征進(jìn)行互相替換而形成的技術(shù)方案。