skywalkling~插件定义体系

本文详细介绍了Apache SkyWalking的插件开发体系,以Dubbo插件为例,阐述了如何定义XXXInstrumentation,包括ClassInstanceMethodsEnhancePluginDefine、NameMatch和IndirectMatch等目标匹配方式。DubboInstrumentation拦截了org.apache.dubbo.monitor.support.MonitorFilter,使用InstanceMethodsAroundInterceptor进行AOP操作。同时,文章提到了插件声明和配置,如在`skywalking-plugin.def`和`agent.config`中的设置。
摘要由CSDN通过智能技术生成
官方开发指南

https://skywalking.apache.org/docs/skywalking-java/v8.8.0/en/setup/service-agent/java-agent/java-plugin-development-guide/

插件定义体系:

XXXInstrumentation

1.拦截实例方法/构造器 ClassInstanceMethodsEnhancePluginDefine
2.拦截静态方法ClassStaticMethodsEnhancePluginDefine
3.AbstractClassEnhancePluginDefine是自定义插件的基础抽象类
4.enhanceClass方法声明要拦截的类
5.getXXXMethodsInterceptPoints声明要拦截的方法

目标匹配 ClassMatch

1.按类名匹配NameMatch
2.模糊匹配 IndirectMatch

本文以dubbo插件为例
在这里插入图片描述
DubboInstrumentation是指定的对dubbo的一个插桩

  private static final String ENHANCE_CLASS = "org.apache.dubbo.monitor.support.MonitorFilter";
    @Override
    protected ClassMatch enhanceClass() {
        return NameMatch.byName(ENHANCE_CLASS);
    }

指定了编写dubbo插件时拦截的具体的类,NameMatch.byName根据名称进行拦截匹配,具体拦截了org.apache.dubbo.monitor.support.MonitorFilter这个类(发起远程调)

  @Override
    public ConstructorInterceptPoint[] getConstructorsInterceptPoints() {
        return null;
    }

对构造方法进行拦截,这里没有用到

   @Override
    public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() {
        return new InstanceMethodsInterceptPoint[] {
            new InstanceMethodsInterceptPoint() {
                @Override
                public ElementMatcher<MethodDescription> getMethodsMatcher() {
              
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值