pinpoint监控学习笔记

pinpoint分以下主要模块:

pinpoint-agent,这个工程引用了其它核心jar,整个pinpoint监控的配置文件在这个项目中: pinpoint.config。


pinpoint-bootstrap:

  这个工程定义了当jvm启动时,利用java instrument,实现对于后续pinpoint-core jar及相应plugin的加载等任务。

  进行以下步骤:

  1.将pinpoint-core包加入javassist的bootstreap类加载器当中。

  2.会创建plugin类加载器,加载所有用户自定义插件jar,如dubbo等。

  3.创建pinpoint类加载器,加载pinpoint profile jar包,及找出一个Agent实现,这里是DefaultAgent,并创建它。

  4.创建好后,调用DefaultAgent的start方法,启动agent实例,底层会创建cpu,jvm内存的收集线程。


pinpoint-core:

  这个工程是整个pinpoint核心jar包,如Agent的接口定义都在此包中。


pinpoint-profile:

  这个工程包含DefaultAgent的实现。

  在创建DefaultAgent的时候,所处类加载器是pinpoint classLoad。这里会做以下事情:

  1.加载所有扩展plugin,这些plugin有些需要对相应类进行增强,所以会先将这些plugin类注册到transformerRegistry中,这里transformerRegistry内部用要增强的类名作为key,对应用户实现增强逻辑的transformer实现作为value。

  2.创建一个ClassFileTransformerDispatcher,将它加入到java的instrumentation中。之后应用类加载器加载类时会运行ClassFileTransformerDispatcher的transform方法。由ClassFileTransformerDispatcher去根据类名查找到之前存放在transformerRegistry中的用户实现的字节码增强transformer类。

  然后回调这个用户实现的transformer类,以此实现字节码增强。


类加载器层次:

MonitClassLoader就是pinpointClassLoader负责加载agent相关的jar包,监控的lib jar包等,它继承于应用路径的加载器AppClassLoader。
这么做有个好处,因为加载类基于父类委派原则,所以如果监控jar包含了业务应用相关类时,会从应用加载器加载,这样不会导致应用要求的类被监控jar污染。

pluginClassLader在jvm正式加载应用类时,调用 Instrumentation对应注册的ClassFileTransformer中transform时,这里需要根据之前注册过的插件去进行相应类的字节码增强逻辑。
由于这里需要用到监控的一些类,比如字节码增强javassist相关类,及一些织入工具类,监控libs下相关jar等。因此pluginClassLader需要继承于MonitClassLoader。

父类委派模式,对于以下需求比较合适:
新增的相应逻辑,即需要新增一些类及依赖是原应用没有的,又需要去加载原应用的一些类。

监控就属于这种需求。



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在Spring Boot项目中使用Pinpoint进行监控,您需要按照以下步骤进行设置: 1. 首先,您需要在您的Spring Boot项目中添加Pinpoint的依赖。您可以在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.navercorp.pinpoint</groupId> <artifactId>pinpoint-bootstrap</artifactId> <version>${pinpoint.version}</version> </dependency> ``` 确保将`${pinpoint.version}`替换为您要使用的Pinpoint版本。 2. 接下来,您需要在您的Spring Boot应用程序的入口类上添加`@PinpointConfig`注解。这将启用Pinpoint代理,并将其连接到Pinpoint Collector。 ```java import com.navercorp.pinpoint.bootstrap.config.ProfilerConfig; import com.navercorp.pinpoint.bootstrap.config.DefaultProfilerConfig; import com.navercorp.pinpoint.bootstrap.config.DefaultProfilerConfig; @PinpointConfig @SpringBootApplication public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } @Bean public ProfilerConfig profilerConfig() { return new DefaultProfilerConfig(); } } ``` 3. 在运行您的Spring Boot应用程序之前,您需要确保Pinpoint Collector正在运行,并且Pinpoint代理可以连接到它。您可以在Pinpoint Collector的管理界面上查看代理的连接情况。 4. 运行您的Spring Boot应用程序,并访问它以触发Pinpoint代理的数据收集。您可以在Pinpoint Collector的管理界面上查看应用程序的监控数据。 这些是在Spring Boot项目中使用Pinpoint进行监控的基本步骤。您还可以根据Pinpoint的文档和配置文件进行更详细的设置和调整。希望对您有所帮助!如有任何问题,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值