Как настроить агент 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 выше. Таким образом, промежутки, которые вы, как разработчик приложения, объявляете, станут корнями.