中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

UAVMOF工作原理之Agent注入機(jī)制原理-創(chuàng)新互聯(lián)

一、前言

MOF(Moniter Framwork)作為UAV應(yīng)用數(shù)據(jù)捕獲框架,不但實(shí)現(xiàn)了對(duì)應(yīng)用無(wú)侵入的數(shù)據(jù)捕獲,而且在框架層面實(shí)現(xiàn)了功能的靈活控制,并且保證了良好的可擴(kuò)展性,在UAV中具有舉足輕重的地位。

創(chuàng)新互聯(lián)公司 - 綿陽(yáng)服務(wù)器托管,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽(yáng)服務(wù)器托管,德陽(yáng)服務(wù)器托管,遂寧服務(wù)器托管,綿陽(yáng)服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),綿陽(yáng)服務(wù)器托管,西南服務(wù)器托管,四川/成都大帶寬,成都機(jī)柜租用,四川老牌IDC服務(wù)商

MOF Agent注入機(jī)制作為UAV MOF工作的基礎(chǔ),也為UAV無(wú)侵入捕獲應(yīng)用數(shù)據(jù)提供可能。UAV Agent代碼注入機(jī)制結(jié)合javaagent(premain)和javaassist技術(shù),在應(yīng)用字節(jié)碼加載到JVM之前進(jìn)行字節(jié)碼改寫。通過(guò)適配器適配(adaptor)不同應(yīng)用服務(wù)器,目前支持的包括Tomcat(6+)、SpringBoot、Jetty(7+)等,結(jié)合攔截器(interceptor)實(shí)現(xiàn)對(duì)不同應(yīng)用服務(wù)器切點(diǎn),為MOF框架和應(yīng)用數(shù)據(jù)捕獲提供基礎(chǔ)。

二、Java Agent技術(shù)

自JDK1.5開始, JDK中引入了java.lang.Instrument包,提供在Java程序類加載之前修改class字節(jié)碼和運(yùn)行時(shí)動(dòng)態(tài)修改系統(tǒng)中Class類型的能力,其中一個(gè)核心概念即Java Agent,可以理解為一個(gè)字節(jié)碼轉(zhuǎn)換器或者Class對(duì)象轉(zhuǎn)換器。針對(duì)字節(jié)碼轉(zhuǎn)化和Class對(duì)象轉(zhuǎn)化,Java agent分別提供了相應(yīng)的方式,即Java agent premain方式和Java agent agentmain方式。UAV MOF使用的是Java agent premain方式,因此本文主要講解該轉(zhuǎn)化方式。

Java agent premain方式提供了在字節(jié)碼class文件被JVM加載之前攔截并修改的神奇能力,目前基本所有基于探針的監(jiān)控系統(tǒng)(如ONEAPM Servers)都是基于這種能力實(shí)現(xiàn)的對(duì)應(yīng)用的無(wú)侵入監(jiān)控。Java agent premain中有兩個(gè)重要的概念,分別是premain和transformer。

premain將在程序的main方法之前執(zhí)行,我們知道程序的入口是main方法,premain代表了在程序正式啟動(dòng)之前執(zhí)行的動(dòng)作,具備類似AOP的能力。transformer,寓意轉(zhuǎn)化器,提供字節(jié)碼文件流轉(zhuǎn)化的能力。

UAV MOF工作原理之Agent注入機(jī)制原理

圖1 Class文件轉(zhuǎn)化圖

集合premain和transformer兩大神器,可以對(duì)加載進(jìn)JVM的任意Class文件進(jìn)行修改。其流程如圖1所示,任何Class文件加載時(shí)候,都要經(jīng)過(guò)premain這一關(guān)卡,通過(guò)一系列的transformer,Class字節(jié)碼文件流最終變成那個(gè)完美的它,然后被加載到JVM中。當(dāng)然,修改Class字節(jié)碼文件流的動(dòng)作是在transformer中進(jìn)行的。這就有個(gè)問題,拿到了字節(jié)碼文件流,怎么修改呢?當(dāng)然是發(fā)揮人類的特長(zhǎng),借助工具,比如說(shuō)javassist。

三、Javassist技術(shù)

Javaassist是一個(gè)開源的分析、編輯和創(chuàng)建Java字節(jié)碼的類庫(kù),能運(yùn)行時(shí)動(dòng)態(tài)生成類,修改類,并且能直接使用java編碼。

前文Java agent技術(shù)中,在transformer中拿到了類的字節(jié)碼文件流,利用Javaassist解析字節(jié)碼流為類對(duì)象,并對(duì)其進(jìn)行修改,非??焖俦憬?。Javassist與Java agent結(jié)合將事半功倍。關(guān)于Javaassist的使用還請(qǐng)參考官網(wǎng)http://www.javassist.org。

四、MOF Agent注入機(jī)制

前文中介紹了一對(duì)好伙伴:Javaagent技術(shù)和Javassit技術(shù)。Java agent負(fù)責(zé)攔截和轉(zhuǎn)換字節(jié)碼流,轉(zhuǎn)換的過(guò)程中使用Javaassist進(jìn)行解析和修改。此兩者技術(shù)為MOF Agent注入機(jī)制提供了技術(shù)基礎(chǔ)。相信小伙伴對(duì)MOF Agent注入機(jī)制已經(jīng)有了一定了猜想。

圖2為MOF Agent的組件圖,MOFAgent基于java agent premain技術(shù)實(shí)現(xiàn),攔截所有加載的Class字節(jié)碼文件流;并通過(guò)UAV的transformer(MOFClsTransformer)進(jìn)行字節(jié)碼劫持和轉(zhuǎn)化。UAV做的不僅僅是這些,還能自動(dòng)感知不同應(yīng)用服務(wù)器,并對(duì)不同應(yīng)用服務(wù)器生命周期中的重要位置注入切點(diǎn)。UAV通過(guò)適配器(Adaptor)進(jìn)行不同應(yīng)用服務(wù)適配,通過(guò)攔截器(interceptor)進(jìn)行具體的切點(diǎn)注入實(shí)現(xiàn)。

UAV MOF工作原理之Agent注入機(jī)制原理

圖2 MOF Agent組件圖

MOFAgent注入機(jī)制將對(duì)應(yīng)用服務(wù)器生命周期中關(guān)鍵位置注入切點(diǎn),為MOF框架初始化、應(yīng)用的畫像信息和實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)信息捕獲提供基礎(chǔ)。MOF Agent注入的不同切點(diǎn)會(huì)產(chǎn)生不同的事件,通過(guò)事件驅(qū)動(dòng)后續(xù)MOF框架。MOF支持的主要切點(diǎn)如下:

1)應(yīng)用服務(wù)器入口

應(yīng)用服務(wù)器入口切點(diǎn),UAV將完成MOF Jar包加載和配置文件初始化;

2)應(yīng)用服務(wù)器啟動(dòng)

應(yīng)用服務(wù)器啟動(dòng)時(shí),切將保證UAV MOF將隨應(yīng)用服務(wù)器啟動(dòng)完成MOF內(nèi)部代碼的自啟動(dòng)和初始化;

3)應(yīng)用服務(wù)器請(qǐng)求處理和回復(fù)

應(yīng)用服務(wù)器請(qǐng)求和回復(fù)切點(diǎn),是UAV對(duì)應(yīng)用實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)捕獲的重要切點(diǎn),監(jiān)控應(yīng)用服務(wù)器,應(yīng)用,所有的URL的性能指標(biāo);

4)應(yīng)用初始化

應(yīng)用初始化切點(diǎn)時(shí),UAV將對(duì)應(yīng)用的Filter進(jìn)行改寫,支持MOF的Global Filter機(jī)制;同時(shí)完成對(duì)應(yīng)用畫像信息進(jìn)行捕獲等;

5)應(yīng)用停止

應(yīng)用停止時(shí)切點(diǎn),UAV將完成MOF相關(guān)機(jī)制的停止等操作

本文主要目的是讓讀者了解UAV MOF Agent代碼注入機(jī)制原理和相關(guān)實(shí)現(xiàn)。MOF中其它重要框架及其實(shí)現(xiàn)原理將會(huì)在后續(xù)文章中依次剖析。

作者:曾禮

首發(fā):UAVStack智能運(yùn)維

來(lái)源:宜信技術(shù)學(xué)院

當(dāng)前文章:UAVMOF工作原理之Agent注入機(jī)制原理-創(chuàng)新互聯(lián)
文章地址:http://www.rwnh.cn/article20/dpeico.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站制作、自適應(yīng)網(wǎng)站、建站公司、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
陆丰市| 佛学| 沈阳市| 永靖县| 鹤壁市| 府谷县| 青岛市| 留坝县| 海晏县| 怀宁县| 本溪| 师宗县| 乐平市| 枝江市| 桃江县| 合川市| 漳州市| 大名县| 绥宁县| 旬邑县| 洛阳市| 西吉县| 阿克苏市| 贺兰县| 上高县| 安西县| 高台县| 旌德县| 会理县| 南昌县| 东宁县| 抚州市| 铜梁县| 儋州市| 临武县| 阿坝县| 新源县| 平遥县| 开平市| 皮山县| 微博|