Как настроить Kamon для докеризированного приложения Akka? - PullRequest
0 голосов
/ 22 мая 2018

Я создал пример сервиса в 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 я установил агент данных для докера.

Когда я запускаю сервисный контейнер на экземпляре EC2, а затем заглядываю в интерфейс DataDog, я не вижу связанных метрик с akka, просто список стандартных метрик, таких как: datadog.process.agent, docker.cpu.usage,system.io.await и т. Д.

Как включить метрики, относящиеся к akka, если приложение akka упаковано в докер и развернуто в EC2?

1 Ответ

0 голосов
/ 24 октября 2018

Необходимо добавить AspectJ weaver в качестве агента Java при запуске приложения Akka: -javaagent:aspectjweaver.jar

Вы можете добавить следующие параметры в конфигурацию SBT вашего проекта:

.settings(
  retrieveManaged := true,
  libraryDependencies += "org.aspectj" % "aspectjweaver" % aspectJWeaverV)

Таким образом, JAR-файл AspectJ weaver будет скопирован в ./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"]
...