返回顶部
首页 > 资讯 > 精选 >UAV MOF工作原理之Agent注入机制原理
  • 957
分享到

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

2023-06-04 23:06:50 957人浏览 安东尼
摘要

一、前言MOF(Moniter Framwork)作为UAV应用数据捕获框架,不但实现了对应用无侵入的数据捕获,而且在框架层面实现了功能的灵活控制,并且保证了良好的可扩展性,在UAV中具有举足轻重的地位。MOF Agent注入机制作为UAV

一、前言

MOF(Moniter Framwork)作为UAV应用数据捕获框架,不但实现了对应用无侵入的数据捕获,而且在框架层面实现了功能的灵活控制,并且保证了良好的可扩展性,在UAV中具有举足轻重的地位。

MOF Agent注入机制作为UAV MOF工作的基础,也为UAV无侵入捕获应用数据提供可能。UAV Agent代码注入机制结合javaagent(premain)和javaassist技术,在应用字节码加载到JVM之前进行字节码改写。通过适配器适配(adaptor)不同应用服务器,目前支持的包括Tomcat(6+)、SpringBoot、Jetty(7+)等,结合拦截器(interceptor)实现对不同应用服务器切点,为MOF框架和应用数据捕获提供基础。

二、Java Agent技术

jdk1.5开始, JDK中引入了java.lang.Instrument包,提供在Java程序类加载之前修改class字节码和运行时动态修改系统中Class类型的能力,其中一个核心概念即Java Agent,可以理解为一个字节码转换器或者Class对象转换器。针对字节码转化和Class对象转化,Java agent分别提供了相应的方式,即Java agent premain方式和Java agent agentmain方式。UAV MOF使用的是Java agent premain方式,因此本文主要讲解该转化方式。

Java agent premain方式提供了在字节码class文件被JVM加载之前拦截并修改的神奇能力,目前基本所有基于探针的监控系统(如ONEAPM Servers)都是基于这种能力实现的对应用的无侵入监控。Java agent premain中有两个重要的概念,分别是premain和transfORMer。

premain将在程序的main方法之前执行,我们知道程序的入口是main方法,premain代表了在程序正式启动之前执行的动作,具备类似aop的能力。transformer,寓意转化器,提供字节码文件流转化的能力。

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

图1 Class文件转化图

集合premain和transformer两大神器,可以对加载进JVM的任意Class文件进行修改。其流程如图1所示,任何Class文件加载时候,都要经过premain这一关卡,通过一系列的transformer,Class字节码文件流最终变成那个完美的它,然后被加载到JVM中。当然,修改Class字节码文件流的动作是在transformer中进行的。这就有个问题,拿到了字节码文件流,怎么修改呢?当然是发挥人类的特长,借助工具,比如说javassist。

三、Javassist技术

Javaassist是一个开源的分析、编辑和创建Java字节码的类库,能运行时动态生成类,修改类,并且能直接使用java编码。

前文Java agent技术中,在transformer中拿到了类的字节码文件流,利用Javaassist解析字节码流为类对象,并对其进行修改,非常快速便捷。Javassist与Java agent结合将事半功倍。关于Javaassist的使用还请参考官网Http://www.javassist.org。

四、MOF Agent注入机制

前文中介绍了一对好伙伴:Javaagent技术和Javassit技术。Java agent负责拦截和转换字节码流,转换的过程中使用Javaassist进行解析和修改。此两者技术为MOF Agent注入机制提供了技术基础。相信小伙伴对MOF Agent注入机制已经有了一定了猜想。

图2为MOF Agent的组件图,MOFAgent基于java agent premain技术实现,拦截所有加载的Class字节码文件流;并通过UAV的transformer(MOFClsTransformer)进行字节码劫持和转化。UAV做的不仅仅是这些,还能自动感知不同应用服务器,并对不同应用服务器生命周期中的重要位置注入切点。UAV通过适配器(Adaptor)进行不同应用服务适配,通过拦截器(interceptor)进行具体的切点注入实现。

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

图2 MOF Agent组件图

MOFAgent注入机制将对应用服务器生命周期中关键位置注入切点,为MOF框架初始化、应用的画像信息和实时监控数据信息捕获提供基础。MOF Agent注入的不同切点会产生不同的事件,通过事件驱动后续MOF框架。MOF支持的主要切点如下:

1)应用服务器入口

应用服务器入口切点,UAV将完成MOF jar包加载和配置文件初始化;

2)应用服务器启动

应用服务器启动时,切将保证UAV MOF将随应用服务器启动完成MOF内部代码的自启动和初始化;

3)应用服务器请求处理和回复

应用服务器请求和回复切点,是UAV对应用实时监控数据捕获的重要切点,监控应用服务器,应用,所有的URL的性能指标;

4)应用初始化

应用初始化切点时,UAV将对应用的Filter进行改写,支持MOF的Global Filter机制;同时完成对应用画像信息进行捕获等;

5)应用停止

应用停止时切点,UAV将完成MOF相关机制的停止等操作

本文主要目的是让读者了解UAV MOF Agent代码注入机制原理和相关实现。MOF中其它重要框架及其实现原理将会在后续文章中依次剖析。

作者:曾礼

首发:UAVStack智能运维

来源:宜信技术学院

--结束END--

本文标题: UAV MOF工作原理之Agent注入机制原理

本文链接: https://lsjlt.com/news/240399.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • UAV MOF工作原理之Agent注入机制原理
    一、前言MOF(Moniter Framwork)作为UAV应用数据捕获框架,不但实现了对应用无侵入的数据捕获,而且在框架层面实现了功能的灵活控制,并且保证了良好的可扩展性,在UAV中具有举足轻重的地位。MOF Agent注入机制作为UAV...
    99+
    2023-06-04
  • 命令注入工具Commix的工作原理是什么
    这篇文章主要为大家展示了“命令注入工具Commix的工作原理是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“命令注入工具Commix的工作原理是什么”这篇文章吧。命令注入工具Commix命令...
    99+
    2023-06-04
  • MySQL45讲之order工作原理 - flowers
    本文介绍 order 的三种排序方式,全字段排序、rowid 排序和索引树排序,以及每种排序方式具体是如何工作的。 前言 本文介绍 order 的三种排序方式,全字段排序、rowid 排序和索...
    99+
    2017-04-04
    MySQL45讲之order工作原理 - flowers
  • 深入理解 PHP Stream 的工作原理
    PHP Stream 是 PHP 内置的一个重要特性,它提供了灵活的文件读写操作,允许 PHP 脚本以各种方式操作输入和输出数据流。本文将深入探讨 PHP Stream 的工作原理,并...
    99+
    2024-04-02
  • Linux NFS机制工作原理及实例解析
    什么是NFS? network file system 网络文件系统 通过网络存储和组织文件的一种方法或机制。 为什么要用NFS? 前端所有的应用服务器接收到用户上传的图片、文件、视频,都会统一放到后...
    99+
    2022-06-03
    Linux NFS机制
  • Linux NFS机制工作原理及实例分析
    Linux NFS机制工作原理及实例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。NFS是network file system (网络文件系统)的缩写,其主要作用就是通过...
    99+
    2023-06-28
  • PHP 底层的运行机制和工作原理
    阅读目录 阐述一、PHP的设计理念及特点PHP 为什么没有多线程?1、PHP 与多线程2、PHP是单线程,多进程模型3、 php为什么选择多进程,而不是多线程4、场景 二、PHP 四...
    99+
    2023-08-31
    php 服务器 开发语言
  • springMVC的工作原理和机制以及配置
    这篇文章主要讲解了“springMVC的工作原理和机制以及配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springMVC的工作原理和机制以及配置”吧!工作原理下面的是springMVC...
    99+
    2023-06-03
  • 深入理解PHP SSO单点登录的工作原理和技术机制
    随着互联网的快速发展,各种网站和应用的数量也日益增多。用户为了访问不同的网站和应用,需要分别注册不同的账号和密码,给用户带来了不便和烦恼。为了解决这个问题,单点登录(Single Sign-On,SSO)应运而生。SSO是一种授权认证系统,...
    99+
    2023-10-21
    PHP SSO 单点登录
  • VPS云主机的工作原理
    本篇内容介绍了“VPS云主机的工作原理”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是VPS?先从查看VPS及其工作原理开始。虚拟专用服...
    99+
    2023-06-03
  • mysql主从复制的工作原理
    这篇文章给大家分享的是有关mysql主从复制的工作原理的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql主从复制原理:首先主库发送更新事件到从库;然后从库读取更新记录,并执...
    99+
    2024-04-02
  • 深入探索Go语言垃圾回收机制的工作原理
    Go语言的垃圾回收机制采用了并发标记清除(concurrent mark and sweep)的算法,主要分为三个阶段:标记阶段、清...
    99+
    2023-10-08
    Golang
  • 深入理解spring的AOP机制原理
    前言在软件开发中,散布于应用中多处的功能被称为横切关注点,通常来讲,这些横切关注点从概念上是与应用的业务逻辑相分离的。把这些横切关注点和业务逻辑分离出来正是AOP要解决的问题。AOP能够帮我们模块化横切关注点,换言之,横切关注点可以被描述为...
    99+
    2023-05-31
    spring aop sprin
  • token工作机制及原理附Java生成token工具类
    目录什么是token基于 Token 的身份验证token的优势1.无状态、可扩展2.安全性3.可扩展性4.多平台跨域5.基于标准token原理token实现思路token代码生成工...
    99+
    2024-04-02
  • 深入浅析HashMap的工作原理
    这篇文章给大家介绍深入浅析HashMap的工作原理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集...
    99+
    2023-05-31
    hashmap
  • sql注入报错之注入原理实例解析
    目录前言0x010x020x03总结前言 我相信很多小伙伴在玩sql注入报错注入时都会有一个疑问,为什么这么写就会报错?曾经我去查询的时候,也没有找到满意的答案,时隔几个月终于找到搞清楚原理...
    99+
    2022-06-13
    sql注入 报错注入 SQL报错注入 sql注入报错
  • Mysql主从复制作用和工作原理
    一、什么是主从复制 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。在最常用的mysql数据库中,支持单项、异步赋值。在赋值过程中,一个服务器充当主服...
    99+
    2024-04-02
  • mysql主从复制的工作原理图
    本文主要给大家介绍mysql主从复制的工作原理图,文章内容对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql主从复制的工作原理图吧。  看完以上关于mysql主从复制的工作原理...
    99+
    2024-04-02
  • MySQL复制的工作原理是什么
    今天就跟大家聊聊有关MySQL复制的工作原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 MySQL复制的工作...
    99+
    2024-04-02
  • 详解Android JetPack之LiveData的工作原理
    目录前言 介绍 原理分析 前言 本篇文章主要讲解LiveData工作的原理,如果还不知道LiveData如何用的话,请参考官方文档。 LiveData的讲解涉及到了Lifecycl...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作