如何为Akka应用程序配置OpenTelemetry代理

alen0pnh  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在尝试使用OpenTelemetry代理从我用Scala编写的Akka应用程序中导出指标和跟踪,目的是在OpenSearch中使用数据。
适用于我的应用程序的技术堆栈:

  • akka -2.6 *
  • RabbitMQ(amqp客户端5.12.*)
  • PostgreSQL(数据库语言)

我已将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
a2mppw5e

a2mppw5e1#

好的,我通过运行this issue,然后阅读如何抑制特定的工具来解决这个问题。
因此,为了减少跟踪 Jmeter 板中的混乱,可以向属性文件添加以下内容(或通过环境变量添加等效内容):

otel.instrumentation.rabbitmq.enabled=false
otel.instrumentation.grpc.enabled=false

请注意,我删除了两个混乱的插装库,这是我的用例所特有的。对于另一个应用程序,我们将从上面的链接#2中选择其他库。这样,作为应用程序开发人员,您声明的span将成为根。

相关问题