基于JavaAgent的全链路监控一《嗨!JavaAgent》
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了基于JavaAgent的全链路监控一《嗨!JavaAgent》,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3010字,纯文字阅读大概需要5分钟。
内容图文
![基于JavaAgent的全链路监控一《嗨!JavaAgent》](/upload/InfoBanner/zyjiaocheng/735/877793f7b56a4e1fb79d5a6658211ba4.jpg)
前言介绍
全链路监控又名分布式监控系统全链路追踪,目前市面的全链路监控系统基本都是参考Google的Dapper(大规模分布式系统的跟踪系统)来做的。例如;蚂蚁金服分布式链路跟踪组件SOFATracer、Gokit微服务-服务链路追踪 、Pinpoint、Prometheus(普罗米修斯)等等。
章节列表 | 关注微信公众号,bugstack虫洞栈,回复<基于JavaAgent的全链路监控>获取源码
- 基于JavaAgent的全链路监控一《嗨!JavaAgent》
- 基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》
- 基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》
- 基于JavaAgent的全链路监控四《JVM内存与GC信息》
- 基于JavaAgent的全链路监控五《ThreadLocal链路追踪》
- 基于JavaAgent的全链路监控六《开发应用级监控》
案例简述
JavaAgent是在JDK5之后提供的新特性,也可以叫java代理。开发者通过这种机制(Instrumentation)可以在加载class文件之前修改方法的字节码(此时字节码尚未加入JVM),动态更改类方法实现AOP,提供监控服务如;方法调用时长、可用率、内存等。本章节初步怎么让java代码执行时可以进入我们的agent方法。
环境准备
1、IntelliJ IDEA Community Edition
2、jdk1.8.0_45 64位
配置信息(路径相关修改为自己的)
1、配置位置:Run/Debug Configurations -> VM options
2、配置内容:-javaagent:E:\itstack\GIT\itstack.org\itstack-demo-agent\itstack-demo-agent-01\target\itstack-demo-agent-01-1.0.0-SNAPSHOT.jar=testargs
代码示例
itstack-demo-agent-01
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── org.itstack.demo.agent
│ │ └── MyAgent.java
│ └── resources
│ └── META-INF
│ └── MANIFEST.MF
└── test
└── java
└── org.itstack.demo.test
└── ApiTest.java
pom.xml
<properties>
<!-- Build args -->
<argline>-Xms512m -Xmx512m</argline>
<skip_maven_deploy>false</skip_maven_deploy>
<updateReleaseInfo>true</updateReleaseInfo>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
<maven.test.skip>true</maven.test.skip>
<!-- 自定义MANIFEST.MF -->
<maven.configuration.manifestFile>src/main/resources/META-INF/MANIFEST.MF</maven.configuration.manifestFile>
</properties>
MyAgent.java
/**
* 博客:http://itstack.org
* 论坛:http://bugstack.cn
* 公众号:bugstack虫洞栈 {获取学习源码}
*/
public class MyAgent {
//JVM 首先尝试在代理类上调用以下方法
public static void premain(String agentArgs, Instrumentation inst) {
System.out.println("嗨!JavaAgent " + agentArgs);
}
//如果代理类没有实现上面的方法,那么 JVM 将尝试调用该方法
public static void premain(String agentArgs) {
}
}
MANIFEST.MF
Manifest-Version: 1.0
Premain-Class: org.itstack.demo.agent.MyAgent
Can-Redefine-Classes: true
ApiTest.java
/**
*
* http://bigbully.github.io/Dapper-translation/
*
* 配置监控
* VM options:
* -javaagent:E:\itstack\GIT\itstack.org\itstack-demo-agent\itstack-demo-agent-01\target\itstack-demo-agent-01-1.0.0-SNAPSHOT.jar=testargs
*
* 博客:http://itstack.org
* 论坛:http://bugstack.cn
* 公众号:bugstack虫洞栈 {获取学习源码}
* create by fuzhengwei on 2019
*/
public class ApiTest {
public static void main(String[] args) {
System.out.println("hi itstack-demo-agent-01");
}
}
测试结果
this is my agent:testargs
嗨!JavaAgent
Process finished with exit code 0
关注{bugstack虫洞栈}公众号获取源码
内容总结
以上是互联网集市为您收集整理的基于JavaAgent的全链路监控一《嗨!JavaAgent》全部内容,希望文章能够帮你解决基于JavaAgent的全链路监控一《嗨!JavaAgent》所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。