opentelemetry-javaagent扩展agent打包及开发

1.扩展agent的配置方式

opentelemetry-javaagent提供了otel.javaagent.extensions参数来配置扩展agent

具体解释参考https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/examples/extension/README.md#build-and-add-extensions

当然也可以把扩展agent打包到opentelemetry-javaagent的jar包里面

具体解释参考https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/examples/extension/README.md#embed-extensions-in-the-opentelemetry-agent

 

2.如何构建扩展agent项目

尝试过自己构建maven项目,但是一直没成功,应该是要gradle项目(https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7850)

所以就使用官方示例中的项目来构建

2.1.下载opentelemetry-java-instrumentation的源码,然后使用idea打开extension项目

 

2.2.需要自己本地先安装gradle,然后idea配置本地的gradle

 

 

2.3.打开idea的控制台,输入命令进行构建

不要使用./gradlew build命令,这个命令会去自己下载安装gradle,速度会很慢

使用gradle build命令进行构建

第一次构建时会发现有报错,有个test用例没有通过,这个报错其实没关系,jar已经打好了

 

如果想去掉这个报错,可以注释掉build.gradle文件里面的test的构建task

 

构建好的jar包在...\opentelemetry-java-instrumentation-2.13.3\examples\extension\build\libs目录下,有多个jar包

opentelemetry-java-instrumentation-extension-demo-1.0-all.jar就是单独的extension jar

opentelemetry-javaagent.jar就是包含了extension jar的jar

 

 

3.extension二次开发

把extension项目单独拷贝出来,也需要把buildscripts文件夹拷贝出来,构建的时候需要用到

注意这个buildscripts文件夹的路径在build.gradle文件中有指定,注意按需修改

 

 

开发完自己的业务代码,进行构建时,会有代码格式相关的报错

运行 .\gradlew.bat :spotlessApply命令即可格式化代码,然后再运行./gradlew build命令构建即可

 

官方的DemoServlet3Instrumentation示例是拦截http请求,并且在请求头中返回X-server-id字段

但是要注意你的http请求是jakarta.servlet还是javax.servlet,官方示例拦截的是javax.servlet

 

如果需要拦截jakarta.servlet的请求,需要修改一下代码

 

 

 

修改完代码,然后重新构建项目即可

posted @ 2025-03-13 11:59  wdgde  阅读(271)  评论(0)    收藏  举报