两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種java應(yīng)用系統(tǒng)運(yùn)行時(shí)監(jiān)控方法和裝置的制作方法

文檔序號:6356552閱讀:247來源:國知局
專利名稱:一種java應(yīng)用系統(tǒng)運(yùn)行時(shí)監(jiān)控方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及IT運(yùn)維領(lǐng)域,尤其是一種對Java應(yīng)用系統(tǒng)運(yùn)行時(shí)監(jiān)控的方法。
背景技術(shù)
隨著IT建設(shè)的不斷深入和完善,計(jì)算機(jī)軟硬件系統(tǒng)的運(yùn)行維護(hù)變得日益重要。 保證應(yīng)用系統(tǒng)正常持續(xù)運(yùn)行的一個(gè)重要方面是對應(yīng)用系統(tǒng)的行為進(jìn)行監(jiān)控,當(dāng)發(fā)現(xiàn)其行為 不符合預(yù)期或出現(xiàn)異常時(shí)及時(shí)告警,以便維護(hù)人員對問題進(jìn)行處理,排除故障或潛在的問 題。業(yè)務(wù)的快速變化和技術(shù)的不斷創(chuàng)新導(dǎo)致應(yīng)用系統(tǒng)日益復(fù)雜,大型企業(yè)可能存在數(shù)十甚 至上百個(gè)業(yè)務(wù)系統(tǒng),當(dāng)故障發(fā)生時(shí)問題的定位、診斷和修復(fù)一直是信息服務(wù)部門面臨的挑 戰(zhàn)。在監(jiān)控技術(shù)中,一般是采用各種探針從外部觀測應(yīng)用系統(tǒng)占用的CPU、內(nèi)存資源等,不能 監(jiān)測應(yīng)用系統(tǒng)內(nèi)部行為和效果,無法對深層次系統(tǒng)問題進(jìn)行定位、分析。傳統(tǒng)的軟件單步跟 蹤和調(diào)試技術(shù)可以準(zhǔn)確觀察系統(tǒng)內(nèi)部行為,主要適用于軟件開發(fā)階段,當(dāng)系統(tǒng)投入正式運(yùn) 行之后,由于源代碼、符號文件缺失等原因,很難再對系統(tǒng)進(jìn)行單步跟蹤調(diào)試;并且單步跟 蹤、斷點(diǎn)等會影響應(yīng)用系統(tǒng)行為,一般也不允許在生產(chǎn)環(huán)境中使用。因此,如何在應(yīng)用系統(tǒng)運(yùn)行環(huán)境中,在對業(yè)務(wù)系統(tǒng)影響盡可能低的情況下,準(zhǔn)確監(jiān) 測軟件內(nèi)部行為,如方法執(zhí)行所耗時(shí)長,創(chuàng)建的對象數(shù)量,是否有操作異常發(fā)生等,并且將 這些數(shù)據(jù)及時(shí)有效的展現(xiàn)和分析,是IT運(yùn)維領(lǐng)域的技術(shù)人員面臨的一個(gè)突出問題。

發(fā)明內(nèi)容
Java語言是目前應(yīng)用系統(tǒng)開發(fā)的主流編程語言。本發(fā)明提出了一種針對Java開 發(fā)的應(yīng)用系統(tǒng)的運(yùn)行時(shí)監(jiān)控方法,其主要步驟如下
1)通過配置文件描述要監(jiān)控的類或方法,以及監(jiān)控指標(biāo);
2)修改應(yīng)用程序啟動參數(shù),JVM啟動時(shí)加載Agent;
3)Agent讀取配置文件,并根據(jù)監(jiān)控要求向JVM注冊要得到通知的事件;
4)應(yīng)用程序運(yùn)行時(shí),當(dāng)指定的類被加載時(shí),Agent得到通知;
5)Agent修改對應(yīng)類的字節(jié)碼,加入監(jiān)控所需邏輯;
6)Agent初始化相關(guān)指標(biāo)變量;
7)當(dāng)被監(jiān)控的方法調(diào)用時(shí),自動執(zhí)行監(jiān)控邏輯,得到相關(guān)指標(biāo)原始數(shù)據(jù);
8)Agent根據(jù)配置文件的描述,定期計(jì)算相關(guān)指標(biāo)的值,并將數(shù)據(jù)發(fā)送給數(shù)據(jù)收集單 元,并重置相關(guān)指標(biāo)變量;
9)數(shù)據(jù)收集單元匯聚數(shù)據(jù),建立數(shù)據(jù)索引等操作;
10)數(shù)據(jù)展現(xiàn)單元按照用戶操作,根據(jù)數(shù)據(jù)索引提取指標(biāo)數(shù)據(jù),并以表格、線性圖、柱狀 圖等進(jìn)行展示。應(yīng)用上述方法的裝置由監(jiān)控Agent,數(shù)據(jù)收集單元和數(shù)據(jù)展現(xiàn)單元組成。監(jiān)控 Agent包括動態(tài)鏈接庫和相關(guān)的一些jar包,當(dāng)Java程序啟動時(shí)將其作為程序的一部分進(jìn) 行加載,其工作原理如圖2所示。當(dāng)JVM啟動時(shí),JVM根據(jù)運(yùn)行參數(shù)查找動態(tài)鏈接庫,根據(jù)JVMTI (Java Virtual Machine Tool Interface) ^ ,ijf M Agent_0nLo£id 力夕去?!? ^ 中,Agent會讀取配置文件,確定要監(jiān)控的類和方法,然后據(jù)此向JVM聲明自己感興趣的事 件。當(dāng)這些事件發(fā)生時(shí),相關(guān)的回調(diào)函數(shù)會被執(zhí)行。通過這種機(jī)制,Agent可以在Java類加 載時(shí),動態(tài)修改Java程序的字節(jié)碼,根據(jù)要求嵌入自己的監(jiān)控指標(biāo)采集代碼。當(dāng)對應(yīng)類的 方法被執(zhí)行時(shí),相關(guān)的采集代碼會被執(zhí)行,從而掌握應(yīng)用程序的行為統(tǒng)計(jì)。比如要監(jiān)測Card 類的余額查詢方法QueryValue執(zhí)行時(shí)延,Agent會在Card類加載時(shí)修改QueryValue方法 的字節(jié)碼,在進(jìn)入方法時(shí)取得系統(tǒng)時(shí)間,在方法執(zhí)行完畢時(shí)再取一次系統(tǒng)時(shí)間,并計(jì)算兩者 的差,就可得到該方法的執(zhí)行耗時(shí)。同樣的,如果要計(jì)算程序中某方法一直執(zhí)行,還未結(jié)束 的數(shù)量,則可以針對該方法設(shè)置一變量,當(dāng)方法進(jìn)入時(shí)該變量加一,當(dāng)方法退出時(shí)變量減去 一,那么這個(gè)變量的值就代表了當(dāng)前正在執(zhí)行,還未結(jié)束的調(diào)用數(shù)。Agent加載后會啟動數(shù) 據(jù)計(jì)算發(fā)送線程,該線程定期計(jì)算數(shù)據(jù)并通過網(wǎng)絡(luò)發(fā)送給數(shù)據(jù)收集單元;該間隔不宜過短, 過短會增加系統(tǒng)負(fù)載;也不宜過長,過長會導(dǎo)致監(jiān)控粒度過大,不能發(fā)現(xiàn)問題。優(yōu)選地,該間 隔宜設(shè)在30秒到60秒之間。另外一個(gè)要注意的是,為盡可能降低對應(yīng)用程序的影響,Agent 本身并不在磁盤上保存任何數(shù)據(jù);所有數(shù)據(jù)均是通過網(wǎng)絡(luò)保存在數(shù)據(jù)收集單元上。如上所述,配置文件描述了要關(guān)注的應(yīng)用程序類和方法。作為一個(gè)面向?qū)ο蟮木?程語言,Java的一個(gè)特點(diǎn)是繼承。本發(fā)明可以通過監(jiān)測基類的行為實(shí)現(xiàn)對其派生類相關(guān)的 監(jiān)控。此特性具有兩方面的好處首先,技術(shù)人員可以在不清楚應(yīng)用程序代碼(如函數(shù)名,方 法名)的情況下即可實(shí)現(xiàn)對J2EE公共基礎(chǔ)設(shè)施的眾多監(jiān)控;比如,按照J(rèn)ava規(guī)范,所有的 Servlet都必須實(shí)現(xiàn)javax. servlet. krvlet接口,系統(tǒng)只需要設(shè)置了對該接口的監(jiān)控,即 可輕易掌握應(yīng)用程序中眾多krvlet的行為,而無需掌握應(yīng)用程序%1^1討的具體情況,這 大大降低了監(jiān)控的技術(shù)要求。另一方面,因?yàn)閷Ρ姸嗯缮愔恍枰渲霉驳幕?,減少了 部署工作量,提高了工作效率。Agent和數(shù)據(jù)收集單元之間可以是多到多的連接關(guān)系。即一個(gè)Agent可以連接到 多個(gè)數(shù)據(jù)收集單元;單個(gè)數(shù)據(jù)收集單元也可以同時(shí)接收多個(gè)Agent的數(shù)據(jù)。Agent的數(shù)據(jù) 同時(shí)只會發(fā)送到特定的數(shù)據(jù)收集單元,但當(dāng)這個(gè)數(shù)據(jù)收集單元無法連接時(shí),Agent會查找下 一個(gè)備選的收集單元,直到找到可用的單元,這樣可以提高系統(tǒng)可靠性和擴(kuò)展性。數(shù)據(jù)收集單元接收到數(shù)據(jù)后需要建立監(jiān)控?cái)?shù)據(jù)索引,數(shù)據(jù)展現(xiàn)單元根據(jù)索引可以 確定特定指標(biāo),特定時(shí)間段數(shù)據(jù)的存放位置,據(jù)此從對應(yīng)數(shù)據(jù)收集單元提取數(shù)據(jù)并呈現(xiàn)給 技術(shù)人員。綜上所述,和傳統(tǒng)方法相比,本發(fā)明方法優(yōu)點(diǎn)在于第一,降低了對被監(jiān)控服務(wù)器 的硬件開銷,能夠在不影響生產(chǎn)系統(tǒng)正常運(yùn)行,并且不需對應(yīng)用程序源代碼進(jìn)行任何修改 的情況下,實(shí)現(xiàn)對生產(chǎn)環(huán)境中應(yīng)用程序內(nèi)部行為的細(xì)粒度監(jiān)控;第二,高靈活性,可以根據(jù) 應(yīng)用系統(tǒng)的具體情況靈活定制要監(jiān)控的事項(xiàng)或指標(biāo),并且能夠通過對基類或公共接口的監(jiān) 控實(shí)現(xiàn)對應(yīng)用派生類的監(jiān)控。第三,高可靠性和擴(kuò)展性,能夠?qū)Υ笠?guī)模復(fù)雜系統(tǒng)進(jìn)行監(jiān)控。


本發(fā)明將通過例子并參照附圖的方式說明,其中 圖1是本發(fā)明方法的示意流程圖。圖2是Agent工作原理圖。
圖3是本發(fā)明方法的一個(gè)實(shí)施例。圖4是本發(fā)明方法的另一個(gè)實(shí)施例。
具體實(shí)施例方式JDBC (Java Database Connectivity)是 Java 應(yīng)用程序中執(zhí)行 SQL 語句的 API, 可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一訪問,在Java應(yīng)用程序中得到了極其廣泛的應(yīng)用;同時(shí), 數(shù)據(jù)庫是目前業(yè)務(wù)系統(tǒng)重要的基礎(chǔ)設(shè)施,其經(jīng)常是業(yè)務(wù)故障頻發(fā)的組件,如果實(shí)現(xiàn)對JDBC 的操作進(jìn)行監(jiān)控,能顯著提高問題診斷、定位的能力。下面是本發(fā)明方法實(shí)現(xiàn)對JDBC操作 監(jiān)控的一個(gè)具體實(shí)施例。如前所述,應(yīng)用本發(fā)明方法時(shí),第一步就是要確定要監(jiān)控那些類和方法。JDBC規(guī)范 包括下列主要的接口和方法
權(quán)利要求
1.JAVA應(yīng)用系統(tǒng)運(yùn)行時(shí)監(jiān)控方法,其特征在于該方法包括以下步驟1)通過Agent配 置文件配置要監(jiān)控的類或方法,以及監(jiān)控指標(biāo);幻修改應(yīng)用程序啟動參數(shù),JVM啟動時(shí)加 載Agent ;3) Agent讀取配置文件,并根據(jù)監(jiān)控要求向JVM注冊要得到通知的事件;4)應(yīng)用 程序運(yùn)行時(shí),當(dāng)指定的類被加載時(shí),Agent得到通知;5)Agent修改對應(yīng)類的字節(jié)碼,加入監(jiān) 控所需邏輯;6) Agent初始化相關(guān)指標(biāo)變量;7)當(dāng)被監(jiān)控的方法調(diào)用時(shí),自動執(zhí)行監(jiān)控邏 輯,得到相關(guān)指標(biāo)原始數(shù)據(jù);8) Agent根據(jù)配置文件的描述,定期計(jì)算相關(guān)指標(biāo)的值,并將 數(shù)據(jù)發(fā)送給數(shù)據(jù)收集單元,并重置相關(guān)指標(biāo)變量;9)數(shù)據(jù)收集單元匯聚數(shù)據(jù),建立數(shù)據(jù)索 引等操作;10)數(shù)據(jù)展現(xiàn)單元按照用戶操作,根據(jù)數(shù)據(jù)索引提取指標(biāo)數(shù)據(jù),并以表格、線性 圖、柱狀圖進(jìn)行展示。
2.一種應(yīng)用如權(quán)利要求1所述的JAVA應(yīng)用系統(tǒng)運(yùn)行時(shí)監(jiān)控方法的裝置,其特征在于 由Agent、數(shù)據(jù)收集單元、數(shù)據(jù)展現(xiàn)單元結(jié)合服務(wù)器硬件完成。
3.根據(jù)權(quán)利要求2所述的裝置,其特征在于=Agent由一個(gè)動態(tài)鏈接庫和相關(guān)jar包 構(gòu)成,需和被監(jiān)控的業(yè)務(wù)系統(tǒng)部署在同一臺服務(wù)器,由被監(jiān)控JVM啟動時(shí)根據(jù)JVMTI接口加載。
4.根據(jù)權(quán)利要求2所述的裝置,其特征在于=Agent通過修改被監(jiān)控系統(tǒng)的字節(jié)碼,增 加監(jiān)控所需代碼,且修改是在業(yè)務(wù)系統(tǒng)運(yùn)行過程中加載類的時(shí)候動態(tài)完成的。
5.根據(jù)權(quán)利要求2所述的裝置,其特征在于監(jiān)控指標(biāo)采集邏輯是嵌入在被監(jiān)控方法 中,被監(jiān)控方法被調(diào)用時(shí)一起執(zhí)行。
6.根據(jù)權(quán)利要求2所述的裝置,其特征在于可以通過配置文件靈活定義要監(jiān)控的類 和方法,且可以通過指定公共基類實(shí)現(xiàn)對其派生類的監(jiān)控。
7.根據(jù)權(quán)利要求2所述的裝置,其特征在于=Agent通過一個(gè)單獨(dú)的線程,定期計(jì)算統(tǒng) 計(jì)監(jiān)控指標(biāo),并將其主動發(fā)送給數(shù)據(jù)收集裝置,其統(tǒng)計(jì)周期可以自定義。
8.根據(jù)權(quán)利要求2所述的裝置,其特征在于=Agent和數(shù)據(jù)收集單元之間可以是多到多 的連接關(guān)系,一個(gè)Agent可以連接到多個(gè)數(shù)據(jù)收集單元,一個(gè)數(shù)據(jù)收集單元也可以接收來 自多個(gè)Agent的數(shù)據(jù)。
9.根據(jù)權(quán)利要求2所述的裝置,其特征在于其數(shù)據(jù)收集和展現(xiàn)單元所駐留服務(wù)器內(nèi) 存容量需不低于2G。
全文摘要
本發(fā)明公開了一種JAVA應(yīng)用系統(tǒng)運(yùn)行時(shí)監(jiān)控方法和裝置。該方法的主要步驟包括1)通過配置文件描述要監(jiān)控的類或方法,以及監(jiān)控指標(biāo);2)修改應(yīng)用程序啟動參數(shù),JVM啟動時(shí)加載Agent;3)Agent讀取配置文件,并根據(jù)監(jiān)控要求向JVM注冊要得到通知的事件;4)應(yīng)用程序運(yùn)行時(shí),當(dāng)指定的類被加載時(shí),Agent得到通知;5)Agent修改對應(yīng)類的字節(jié)碼,加入監(jiān)控所需邏輯;6)Agent初始化相關(guān)指標(biāo)變量;7)當(dāng)被監(jiān)控的方法調(diào)用時(shí),自動執(zhí)行監(jiān)控邏輯,得到相關(guān)指標(biāo)原始數(shù)據(jù);8)Agent根據(jù)配置文件的描述,計(jì)算相關(guān)指標(biāo)的值。應(yīng)用上述方法,可以顯著提高IT運(yùn)維人員診斷、分析、定位和解決IT系統(tǒng)故障的能力。
文檔編號G06F11/32GK102122263SQ20111006940
公開日2011年7月13日 申請日期2011年3月23日 優(yōu)先權(quán)日2011年3月23日
發(fā)明者廖昕, 楊濤, 胡百國, 陳松 申請人:成都勤智數(shù)碼科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
利辛县| 马边| 河曲县| 安溪县| 土默特右旗| 吴忠市| 望谟县| 新田县| 康定县| 木兰县| 大城县| 合阳县| 临清市| 正镶白旗| 界首市| 宜都市| 本溪| 仪陇县| 镇平县| 房产| 鹤峰县| 同心县| 孝昌县| 奈曼旗| 五河县| 治县。| 哈巴河县| 巴林左旗| 晋城| 石首市| 华宁县| 肥乡县| 四平市| 深圳市| 石阡县| 崇州市| 东安县| 铜梁县| 福泉市| 全州县| 乐昌市|