成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

UAV MOF工作原理之Agent注入機制原理

atinosun / 1618人閱讀

摘要:注入機制作為工作的基礎,也為無侵入捕獲應用數據提供可能。代碼注入機制結合和技術,在應用字節(jié)碼加載到之前進行字節(jié)碼改寫。當然,修改字節(jié)碼文件流的動作是在中進行的。

UAVStack的中間件增強框架專題(MOF)】為大家詳細講述UAV中的MOF Agent是如何借助javaagent(premain)和javaassist技術在對應用無侵入的前提下完成數據捕獲的。歡迎繼續(xù)關注UAVStack,了解UAV更多的技術創(chuàng)新。

前言

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

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

Java Agent技術

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

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

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

圖1 Class文件轉化圖

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

Javassist技術

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

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

MOF Agent注入機制

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

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

圖2 MOF Agent組件圖

MOFAgent注入機制將對應用服務器生命周期中關鍵位置注入切點,為MOF框架初始化、應用的畫像信息和實時監(jiān)控數據信息捕獲提供基礎。MOF Agent注入的不同切點會產生不同的事件,通過事件驅動后續(xù)MOF框架。MOF支持的主要切點如下:

應用服務器入口

應用服務器入口切點,UAV將完成MOF Jar包加載和配置文件初始化;

應用服務器啟動

應用服務器啟動時,切將保證UAV MOF將隨應用服務器啟動完成MOF內部代碼的自啟動和初始化;

應用服務器請求處理和回復

應用服務器請求和回復切點,是UAV對應用實時監(jiān)控數據捕獲的重要切點,監(jiān)控應用服務器,應用,所有的URL的性能指標;

應用初始化

應用初始化切點時,UAV將對應用的Filter進行改寫,支持MOF的Global Filter機制;同時完成對應用畫像信息進行捕獲等;

應用停止

應用停止時切點,UAV將完成MOF相關機制的停止等操作

本文主要目的是讓讀者了解UAV MOF Agent代碼注入機制原理和相關實現(xiàn)。MOF中其它重要框架及其實現(xiàn)原理將會在后續(xù)文章中依次剖析,敬請期待。
宜信技術學院

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/72739.html

相關文章

  • UAVStack的慢SQL數據庫監(jiān)控功能及其實現(xiàn)

    摘要:頁面展示的統(tǒng)計追蹤等信息則通過的接口獲取四功能展示數據庫監(jiān)控目前已實現(xiàn)的功能有分類統(tǒng)計數據庫連接池監(jiān)控慢耗時分布統(tǒng)計慢統(tǒng)計慢追蹤以及調用鏈日志關聯(lián)功能。 作者: 王林林 出處:UAVStack智能運維 來源:宜信技術學院技術沙龍001期|AI中臺:一種敏捷的智能業(yè)務支持方案|宜信技術沙龍 3月28日晚8點線上直播,點擊報名 UAVStack是一個全維監(jiān)控與應用運維平臺。UAV.Mon...

    luodongseu 評論0 收藏0
  • 中間件增強框架-CaptureFramework框架

    摘要:本文為大家講解中的框架。在系統(tǒng)中,中間件增強框架探針提供了應用畫像及性能數據收集等功能,其中數據收集功能主要采集四類數據實時數據畫像數據調用鏈接數據生成以及線程數據分析數據。提供服務,供后續(xù)抓取使用,其中服務注冊了三個,分別為。 本文為大家講解MOF中的CaptureFramework框架。該框架提供統(tǒng)一的數據抓取行為和生成抓取結果能力,實現(xiàn)實時數據采集。 背景 應用服務監(jiān)控是智能運維...

    zhaofeihao 評論0 收藏0
  • 中間件增強框架InterceptFramework

    摘要:攔截之前的準備在應用啟動的特定生命周期內改寫字節(jié)碼,植入特定的邏輯處理代碼進行攔截。劫持通過字節(jié)碼改寫動態(tài)代理等技術,在客戶端調用代碼中嵌入特定處理邏輯,獲取調用相關的信息,如調用地址調用協(xié)議調用結果等。 這次我們?yōu)榇蠹規(guī)碇虚g件增強框架專題(MOF)的最后一篇文章,為大家講解MOF中的InterceptFramework框架。該框架可以在應用啟動過程中獲取畫像信息,實現(xiàn)應用畫像數據采...

    chnmagnus 評論0 收藏0
  • Kubernetes在宜信落地實踐

    摘要:容器云的背景伴隨著微服務的架構的普及,結合開源的和等微服務框架,宜信內部很多業(yè)務線逐漸了從原來的單體架構逐漸轉移到微服務架構。 容器云的背景 伴隨著微服務的架構的普及,結合開源的Dubbo和Spring Cloud等微服務框架,宜信內部很多業(yè)務線逐漸了從原來的單體架構逐漸轉移到微服務架構。應用從有狀態(tài)到無狀態(tài),具體來說將業(yè)務狀態(tài)數據如:會話、用戶數據等存儲到中間件中服務中。 showI...

    fxp 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<