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的請求,需要修改一下代碼



修改完代碼,然后重新構建項目即可

浙公網安備 33010602011771號