我目前面临一个问题,OpenTelemetry Java Agent 没有收到我在 SBT 构建文件中传递给它的参数。这是我的构建文件中的一个片段:
val buildOpenTelemtryJavaAgent: JavaAgent.AgentModule = {
val attributes = "service.name=MY_SERVICE,environment=development"
val argsStr = s"""otel.exporter=otlp otel.exporter.otlp.endpoint=http://198.51.100.1:4317 otel.resource.attributes="$attributes""""
print(argsStr)
JavaAgent(
module = openTelemetryAgentPrefix % openTelemetryAgentModuleName % openTelemetryAgentVersion % "runtime",
name = openTelemetryAgentName,
scope = JavaAgent.AgentScope(true, true, true, true),
arguments = argsStr
)
}
我正在使用 com.lightbend.sbt.javaagent (https://github.com/sbt/sbt-javaagent) 包中的 JavaAgent 案例类将 OpenTelemetry Java 代理附加到我的应用程序。我将一串参数传递给代理,但是当我运行我的应用程序时,出现以下错误:
[otel.javaagent 2023-05-16 06:45:58:127 +0000] [OkHttp http://localhost:4317/...] ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export spans. The request could not be executed. Full error message: Failed to connect to localhost/127.0.0.1:4317
此错误消息表明代理未从我的参数中接收到正确的端点,而是尝试连接到 localhost:4317。无论我在 SBT 构建文件中设置什么 IP 地址,都会发生这种情况。
但是,当我使用以下命令手动运行代理时,它可以正常工作:
-javaagent:/Users/[MY_USER]/dev/git/[MY_PROJECT]/target/scala-2.12/opentelemetry-javaagent.jar -Dotel.exporter=otlp -Dotel.exporter.otlp.endpoint=http://198.51.100.1:4317 -Dotel.resource.attributes="service.name=MY_SERVICE,environment=development"
如果能深入了解这里可能出现的问题,我将不胜感激。我在 SBT 构建文件中传递参数的方式有问题,还是代理如何解释它们有问题?
提前感谢您的帮助。