自己创网站,wordpress window系统,网络营销推广公司有哪些,凡客诚品配送方式Java Agent - 应用程序代理-笔记
概述说明
Java Agent 又叫做 Java 探针#xff0c;该功能是 Java 虚拟机提供的一整套后门#xff0c;通过这套后门可以对虚拟机方方面面进行监控与分析#xff0c;甚至干预虚拟机的运行。 是在 JDK1.5 引入的一种可以动态修改 Java 字节码…Java Agent - 应用程序代理-笔记
概述说明
Java Agent 又叫做 Java 探针该功能是 Java 虚拟机提供的一整套后门通过这套后门可以对虚拟机方方面面进行监控与分析甚至干预虚拟机的运行。 是在 JDK1.5 引入的一种可以动态修改 Java 字节码的技术。Java 类编译之后形成字节码被 JVM 执行在 JVM 在执行这些字节码之前获取这些字节码信息并且通过字节码转换器对这些字节码进行修改来完成一些额外的功能。 这里可以想到这个技术的应用场景就有JVM分析应用监控链路追踪日志收集动态篡改源码加密等了 基础使用原理 提供了一个名为java.lang.instrument的工具包 包是基于JVMTI机制实现的。 JVMTIJava Virtual Machine Tool Interface是一套由 Java 虚拟机提供的了一套代理程序机制可以支持第三方工具程序以代理的方式连接和访问 JVM。JVMTI 的功能非常丰富包括虚拟机中线程、内存/堆/栈类/方法/变量事件/定时器处理等等。使用 JVMTI 一个基本的方式就是设置回调函数在某些事件发生的时候触发并作出相应的动作这些事件包括虚拟机初始化、开始运行、结束类的加载方法出入线程始末等等。 方式一静态参数
通过 -javaagent 参数可以指定一个特定的 jar 包来启动 Instrumentation 代理程序。
JVM启动时 会先执行 premain 方法大部分类加载都会通过该方法注意是大部分不是所有。遗漏的主要是系统类因为很多系统类先于 agent 执行而用户类的加载肯定是会被拦截的。也就是说这个方法是在 main 方法启动前拦截大部分类的加载活动既然可以拦截类的加载就可以结合第三方的字节码编译工具比如ASMjavassistcglib等等来改写实现类。
方式二动态Instrument
Java SE 6 当中提供的 Attach 机制。Attach API 是 Sun 公司提供的一套扩展 API用来向目标 JVM “附着”Attach代理工具程序的。有了它开发者可以方便的监控一个 JVM运行一个外加的代理程序。
这样就一个单独一个程序去接入已运行中的JVM对内部各种信息进行操作了。 以上这些具体技术反正不是我这水平可以去写的。
还是看看使用这个技术的开源项目吧。╮(╯_╰)╭ 应用场景【开源项目】 应用性能监控(APM) APM通过汇聚业务系统各处理环节的实时数据分析业务系统各事务处理的交易路径和处理时间实现对应用的全链路性能监测。开源的Skywalking、Pinpoint,、ZipKin、 Hawkular, 商业的 AppDynamics、OneAPM、Google Dapper等都是个中好手。 classPath动态增补无法理解在哪里会用到搞破坏吗 class 文件加密使用 JVMTI 我们可以将解密的代码封装成 .dll, 或 .so 文件。这些文件想要反编译就很麻烦了另外还能加壳。解密代码不能被破解从而也就保护了我们想要加密的 class 文件。
开源的项目【主要还是APM的】
**阿里巴巴开源的 Arthas**深受开发者喜爱的Java诊断工具。在线排查问题无需重启动态跟踪 Java 代码实时监控 JVM 状态。阿里巴巴开源的JVM SandBox实时、无侵入、动态可插拔的字节码增强框架可用于线上故障定位、系统流控、动态日志等场景国内开源的 Skywalking 针对服务的调用链路、JVM 基础监控信息进行采集。Uber开源的jvm-profiler通过 Java Agent 采集 JVM CPU、Memory、IO等指标并发送给 Kafka、Console 以及可以自定义的发送器。sun开源的BTrace一款java 动态、安全追踪工具可以不停机的情况下监控线上情况并且做到最少的侵入占用最少的系统资源。
链路追踪
Zipkin是Twitter开源的调用链路分析工具目前基于Spingcloud sleuth得到了广泛的应用特点是轻量部署简单。Pinpoint一个韩国团队开源的产品运用了字节码增强技术只需要在启动时添加启动参数即可对代码无侵入目前支持Java和PHP语言底层采用HBase来存储数据探针收集的数据粒度非常细但性能损耗大因其出现的时间较长完成度也很高应用的公司较多**【无侵入】**Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具特点是支持多种插件UI功能较强接入端无代码侵入。【无侵入这个还是很好的】CAT是由国内美团点评开源的基于Java语言开发目前提供Java、C/C、Node.js、Python、Go等语言的客户端监控数据会全量统计国内很多公司在用例如美团点评、携程、拼多多等CAT跟下边要介绍的Zipkin都需要在应用程序中埋点对代码侵入性强。 参考 Java Agent介绍https://blog.csdn.net/a724888/article/details/127004488 Skywalking介绍 https://www.jianshu.com/p/ffa7ddcda4ab SkyWalking 文档中文版:https://skyapm.github.io/document-cn-translation-of-skywalking/ SkyWalking 教程https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/