《手写一个最简单的javaagent》
1、javaagent介绍
在使用skywalking时,使用到了Javaagent技术作为节点的探针,使用Javaagent做字节码植入,无侵入式的收集,并通过HTTP或者gRPC方式发送数据到Skywalking Collector。
后来查阅资料发现javaagent用途还是很广的,有JRebel,各种线上诊断工具(Btrace, Greys),还有阿里开源的 Arthas,在此记录一下javaagent的学习历程。
其实 Java Agent 一点都不神秘,也是一个 Jar 包,只是启动方式和普通 Jar 包有所不同,对于普通的Jar包,通过指定类的 main 函数进行启动,但是 Java Agent 并不能单独启动,必须依附在一个 Java 应用程序运行。
我们可以使用 Agent 技术构建一个独立于应用程序的代理程序,用来协助监测、运行甚至替换其他 JVM 上的程序,使用它可以实现虚拟机级别的 AOP 功能。
大约 4 分钟