如何为 Akka 应用程序配置 OpenTelemetry 代理
How to configure OpenTelemetry agent for an Akka application
我正在尝试使用 OpenTelemetry 代理从我用 Scala 编写的 Akka 应用程序中导出指标和跟踪,目的是使用 OpenSearch 中的数据。
我的应用程序的技术堆栈:
- 阿卡 - 2.6.*
- RabbitMQ(amqp 客户端 5.12.*)
- PostgreSQL (jdbc 42.2.*)
我已将 OpenTelemetry 检测运行时依赖项添加到 build.sbt
:
val runtimeDependencies: Seq[ModuleID] = Seq(
"io.opentelemetry.instrumentation" % "opentelemetry-instrumentation-api" % otelInstrumentationVersion % "runtime"
)
...
libraryDependencies ++= compileDependencies ++ testDependencies ++ runtimeDependencies,
我在属性文件中传递 OpenTelemetry 配置:
export JAVA_OPTS="... \
-javaagent:lib/opentelemetry/opentelemetry-javaagent-all-v1.6.0.jar \
-Dotel.javaagent.configuration-file=lib/opentelemetry/otel.properties"
我的代码中唯一的其他相关部分是属性文件:
otel.service.name=my-app
otel.traces.exporter=jaeger
otel.propagators=jaeger
我确实在 OpenSearch 中收到了一些痕迹,但它们是完全不同且不相关的,而我希望它们是相关联的。例如,在 RabbitMQ 主题上收到一条消息,它进入一个参与者,后者最终发出一个 SQL 查询。结果,我可以看到每次执行每一步花费了多少时间。
这是我在 OpenSearch 中得到的大概视图:
我希望能够遵循文档,但我发现 OpenTelemetry 的 configuration guide 目前还很少。
更新:
不确定这是否相关,但我在 datapreper 上收到警告:
2021-09-29T16:50:50,861 [raw-pipeline-prepper-worker-5-thread-1] WARN com.amazon.dataprepper.plugins.prepper.oteltrace.OTelTraceRawPrepper - Missing trace group for SpanId: 922097e31cf96c72
好的,所以我绕过 运行 穿过 this issue and then reading about how to surpress specific instrumentations。
因此,为了减少跟踪仪表板中的混乱,可以在属性文件中添加如下内容(或通过环境变量等效):
otel.instrumentation.rabbitmq.enabled=false
otel.instrumentation.grpc.enabled=false
请注意,我删除了我的用例特有的两个混乱的检测库。对于另一个应用程序,可以从上面的 link # 2 中选择其他库。这样,您作为应用程序开发人员声明的跨度将成为根。
我正在尝试使用 OpenTelemetry 代理从我用 Scala 编写的 Akka 应用程序中导出指标和跟踪,目的是使用 OpenSearch 中的数据。
我的应用程序的技术堆栈:
- 阿卡 - 2.6.*
- RabbitMQ(amqp 客户端 5.12.*)
- PostgreSQL (jdbc 42.2.*)
我已将 OpenTelemetry 检测运行时依赖项添加到 build.sbt
:
val runtimeDependencies: Seq[ModuleID] = Seq(
"io.opentelemetry.instrumentation" % "opentelemetry-instrumentation-api" % otelInstrumentationVersion % "runtime"
)
...
libraryDependencies ++= compileDependencies ++ testDependencies ++ runtimeDependencies,
我在属性文件中传递 OpenTelemetry 配置:
export JAVA_OPTS="... \
-javaagent:lib/opentelemetry/opentelemetry-javaagent-all-v1.6.0.jar \
-Dotel.javaagent.configuration-file=lib/opentelemetry/otel.properties"
我的代码中唯一的其他相关部分是属性文件:
otel.service.name=my-app
otel.traces.exporter=jaeger
otel.propagators=jaeger
我确实在 OpenSearch 中收到了一些痕迹,但它们是完全不同且不相关的,而我希望它们是相关联的。例如,在 RabbitMQ 主题上收到一条消息,它进入一个参与者,后者最终发出一个 SQL 查询。结果,我可以看到每次执行每一步花费了多少时间。
这是我在 OpenSearch 中得到的大概视图:
我希望能够遵循文档,但我发现 OpenTelemetry 的 configuration guide 目前还很少。
更新:
不确定这是否相关,但我在 datapreper 上收到警告:
2021-09-29T16:50:50,861 [raw-pipeline-prepper-worker-5-thread-1] WARN com.amazon.dataprepper.plugins.prepper.oteltrace.OTelTraceRawPrepper - Missing trace group for SpanId: 922097e31cf96c72
好的,所以我绕过 运行 穿过 this issue and then reading about how to surpress specific instrumentations。
因此,为了减少跟踪仪表板中的混乱,可以在属性文件中添加如下内容(或通过环境变量等效):
otel.instrumentation.rabbitmq.enabled=false
otel.instrumentation.grpc.enabled=false
请注意,我删除了我的用例特有的两个混乱的检测库。对于另一个应用程序,可以从上面的 link # 2 中选择其他库。这样,您作为应用程序开发人员声明的跨度将成为根。