kamon stastsd не отправляет метрики, когда я запускаю свое приложение scala как докер-контейнер

Когда я запускаю приложение Scala, используя 'sbt run' команда отправляет метрики kamon в контейнер графита / графана. Затем я создал образ Docker для моего приложения Scala и запустил его в качестве Docker-контейнера. Теперь он не отправляет метрики в графитовый / графановый контейнер. Контейнер моего приложения и контейнер графита / графана работают в одной и той же сети докеров.

Команда, которую я использовал для запуска образа grafana: docker run --network smart -d -p 80:80 -p 81:81 -p 2003:2003 -p 8125:8125/udp -p 8126:8126 8399049ce731

Конфигурация kamon в application.conf

  kamon {
     auto-start=true
     metric {
       tick-interval = 1 seconds
         filters {
           akka-actor {
              includes = ["*/user/*"]
              excludes = [ "*/system/**", "*/user/IO-**", "**/kamon/**" ]      
           }
           akka-router {
              includes = ["*/user/*"]
              excludes = [ "*/system/**", "*/user/IO-**", "**/kamon/**" ]      
           }
           akka-dispatcher {
              includes = ["*/user/*"]
              excludes = [ "*/system/**", "*/user/IO-**", "*kamon*", 
                  "*/kamon/*", "**/kamon/**" ]
           }
           trace {
              includes = [ "**" ]
              excludes = [ ]enter code here
            }
         }
   }

    # needed for "[error] Exception in thread "main" 
    java.lang.ClassNotFoundException: local"
     internal-config {
       akka.actor.provider = "akka.actor.LocalActorRefProvider"
     }

    statsd {
      hostname = "127.0.0.1"
      port = 8125
      # Subscription patterns used to select which metrics will be pushed 
      to StatsD. Note that first, metrics
      # collection for your desired entities must be activated under the 
      kamon.metrics.filters settings.
      subscriptions {
         histogram       = [ "**" ]
         min-max-counter = [ "**" ]
         gauge           = [ "**" ]
         counter         = [ "**" ]
         trace           = [ "**" ]
         trace-segment   = [ "**" ]
         akka-actor      = [ "**" ]
         akka-dispatcher = [ "**" ]
         akka-router     = [ "**" ]
         system-metric   = [ "**" ]
         http-server     = [ "**" ]
      }
     metric-key-generator = kamon.statsd.SimpleMetricKeyGenerator
     simple-metric-key-generator {
        application = "my-application"
        include-hostname = true
        hostname-override = none
        metric-name-normalization-strategy = normalize
     }
   }

    modules {
      kamon-scala.auto-start = yes
      kamon-statsd.auto-start = yes
      kamon-system-metrics.auto-start = yes
    }
 }

Ваша помощь будет очень ценится.

1 ответ

При запуске приложения необходимо добавить 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"]
Другие вопросы по тегам