pinpoint新增自定义插件监控

pinpoint:源码地址:https://github.com/pinpoint-apm/pinpoint.git
定义:基于Google的Dapper理论,通过在程序内部的class的方法,构造方法等地方埋点,通过Java-agent技术实现类增强的一种链路追踪的监控(APM)工具,由韩国navercorp公司的团队开发并开源。
原理:我们先以简单的main方法打印1+2语句为例,来介绍一下pinpoint中使用的类增强方法。

public class aaa {
    public static void main(String[] args) {
        System.out.println(add(1,2));
    }


    public static int add(int a ,int b){
        return a+b;
    }
}

这个对于任何一位程序员或者程序初学者来说,都是再熟悉不过的一段代码。那pinpoint如果要监控这一段代码应该怎么做呢?
我们做监控的话理所当然的要很明了的知道这段代码是执行了什么方法,执行该方法花了多长时间,执行的方法的traceid(读者可自行谷歌了解一下)是什么?等等。
Java-agent的类增强技术有一个prmain方法,这个即在被增强的方法执行前先执行要增强的方法。
那我找到埋点的方法,在埋点方法前下个探针,扎他一下,在埋点前(before)记录一下时间,这段程序执行完(after)再记录一下时间,时间差就是这段程序执行了多久。在before和after上再做另外的操作,比如记录一下taceid,连接数据库的库名,程序执行时执行的语句是啥等等。
那我们在上面的例子上就可以埋点 add方法,在类增强里面做其他处理。
以pinpoint上的已有的来看一下
首先是plugin 核心的插件类:箭头所指表示埋点com.mysql.jdbc.NonRegisteringDriver,方框表示埋点的方法是:connect,椭圆的框表示connect方法里面的构造参数在这里插入图片描述
再来看一下他的拦截器:DriverConnectInterceptorV2,如我上面所提的,before prepare after

这两个文件算是pinpoint的核心类文件。
当然笔者如果要开发一个新的插件的话还需要在这里占一个坑位,这里的2100就跟mysql插件对应在这里插入图片描述
这个是他的agent代码,你新增一个新的插件要去pinpoint的web代码上添加上对应的代号就行了,这里的代号不能重复,是一一对应的,需要注意一下。笔者能力有限,关于pinpoint方面目前就这么多的领悟,如果有什么疑问的话可以邮件我讨论一下,我在空闲的时候会对好问题去一一回复。 本人邮箱:1262828055@qq.com

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值