Как настроить Kamon для докеризированного приложения Akka?
Я создал образец сервиса в Akka для тестирования мониторинга Kamon + DataDog.
Вот зависимости, которые я добавил:
"io.kamon" %% "kamon-core" % "1.1.0",
"io.kamon" %% "kamon-datadog" % "1.0.0",
"io.kamon" %% "kamon-akka-2.5" % "1.0.1"
Здесь включены подключаемые модули build.sbt
:
.enablePlugins(AshScriptPlugin, DockerPlugin, SbtAspectJRunner)
затем application.conf
:
kamon {
datadog {
time-units = "ms"
memory-units = "b"
}
util {
filters {
"akka.tracked-actor" {
includes = [ "testSystem/user/**" ]
excludes = [ "testSystem/system/**" ]
}
"s3-worker-actors" {
includes = [ "testSystem/user/s3Router/*" ]
}
"fb-worker-actors" {
includes = [ "testSystem/user/fbRouter/*" ]
}
"akka.tracked-router" {
includes = [ "testSystem/user/s3Router", "testSystem/user/fbRouter" ]
}
"akka.tracked-dispatcher" {
includes = [ "**" ]
}
"akka.traced-actor" {
includes = [ "**" ]
}
}
}
akka.actor-groups = [ "s3-worker-actors", "fb-worker-actors" ]
}
Наконец в Main
класс я призываю:
Kamon.addReporter(new DatadogAgentReporter())
На EC2 я установил datadog-агент для докера.
Когда я запускаю сервисный контейнер на экземпляре EC2 и затем заглядываю в интерфейс DataDog, я не вижу связанных метрик с akka, просто список стандартных метрик, таких как: datadog.process.agent
, docker.cpu.usage
, system.io.await
так далее
Как включить метрики, относящиеся к akka, в случае, когда приложение akka упаковано в докер и развернуто в EC2?
1 ответ
При запуске приложения Akka необходимо добавить AspectJ weaver в качестве агента Java: -javaagent:aspectjweaver.jar
Вы можете добавить следующие параметры в конфигурацию вашего проекта SBT:
.settings(
retrieveManaged := true,
libraryDependencies += "org.aspectj" % "aspectjweaver" % aspectJWeaverV)
Таким образом, JAR-архив AspectJ будет скопирован в ./lib_managed/jars/org.aspectj/aspectjweaver/aspectjweaver-[aspectJWeaverV].jar
в корне вашего проекта.
Затем вы можете отослать этот JAR в ваш Dockerfile:
COPY ./lib_managed/jars/org.aspectj/aspectjweaver/aspectjweaver-*.jar /app-
workdir/aspectjweaver.jar
WORKDIR /app-workdir
CMD ["java", "-javaagent:aspectjweaver.jar", "-jar", "app.jar"]