javaagent extenstion拓展功能配置方法

Extension功能使用

目的:Extension功能针对javaagent不支持的框架做拓展配置,抓取到用户关心的事物操作

例如:javaagent目前不支持neo4j

配置方式

  1. 在jar同级目录创建文件目录extensions:mkdir extensions
  2. 进入到extensions目录;cd extensions
  3. 在该目录下创建一个xml文件:vi neo4j.xml
  4. 文件内容如下:例1

    <?xml version="1.0" encoding="UTF-8"?>
    <extension
    name="graphdb.extension"
    version="1.8">
    <instrumentation>
      
    <pointcut>
       <nameTransaction/>
       <interfaceName>org.neo4j.graphdb.Node</interfaceName>
       <method>
        <name>*</name>
       </method>
    </pointcut>
      
    </instrumentation>
    </extension>
    参数说明:
    name是扩展的唯一标识,不可重复。
    version 高版本会覆盖低版本配置,如果javaagent内部配有同名低版本extension,则会执行升级操作。
    Pointcut定位有四种方式 annotationName、interfaceName、className、packageName,neo4j的Node是一个interface,所以此处配置为interfaceName。
    method name 当前只支持通配*
    配置完成后生效

    也可以这样配置
    例2

    <?xml version="1.0" encoding="UTF-8"?>
    <extension
            name="org.webservice"
            version="1.8">
            <instrumentation>
                    <pointcut>
                       <nameTransaction/>
                       <className>com.etc.webbookshop.service.impl.BookServiceImpl</className>
                       <method>
                            <name>*</name>
                       </method>
                    </pointcut>
                    <pointcut>
                       <nameTransaction/>
                       <interfaceName>com.etc.webbookshop.dao.BookDao</interfaceName>
                       <method>
                            <name>*</name>
                       </method>
                    </pointcut>
            </instrumentation>
    </extension>
    从BookService到BookDao是一个业务,这里采用className 和 interfaceName的方式配置扩展,达到业务配置的目的。(ps:在这里配置扩展,不一定会在server端看到它们的事务,响应时间达到要求才会显示)
    packageName的配置要慎重,包下可能包含大量的class。如果不想全部class都监控,可以定义模糊配置。
    例3

    <?xml version="1.0" encoding="UTF-8"?>
    <extension
            name="org.webservice"
            version="1.8">
            <instrumentation>
                    <pointcut>
                       <nameTransaction/>
                       <packageName>com.etc.webbookshop.service.impl.*ServiceImpl</packageName>
                       <method>
                            <name>*</name>
                       </method>
                    </pointcut>
            </instrumentation>
    </extension>
    com.etc.webbookshop.service.impl包下的以ServiceImpl结尾的class
    extension功能帮助:
    使用时配置文件如果没有报错,说明extension的配置就成功了。配置文件报错会在agent启动最开始打印在oneapm.log 中。
    排错方法:
    如果以上都通过了,server端没有收到配置的数据,检查匹配是否填写正确,配置的类是否会被调用,是否异步调用。

 

还有其他问题? 提交请求

您还可以采取以下方式解决问题: