Как настроить агент OpenTelemetry для приложения Akka

Я пытаюсь экспортировать метрики и трассировки из моего приложения Akka, написанного на Scala, с использованием агента OpenTelemetry с целью использования данных в 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 на данный момент скудно .

Обновление :

Не уверен, актуально ли это, но я получаю предупреждение о 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

1 ответ

Решение

Хорошо, поэтому я наткнулся на эту проблему, а затем прочитал о том, как подавить определенные инструменты .

Итак, чтобы уменьшить беспорядок на панели мониторинга трассировки, можно добавить что-то следующее в файл свойств (или эквивалентное через переменные среды):

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

Обратите внимание, что я удалил две загромождающие инструментальные библиотеки, характерные для моего варианта использования. Для другого приложения можно выбрать другие библиотеки из ссылки №2 выше. Таким образом, промежутки, которые вы, как разработчик приложения, объявляете, станут корнями.

Другие вопросы по тегам