Java-buildpack: поддержка нового фреймворка elastic-apm-agent

Созданный на 6 дек. 2018  ·  28Комментарии  ·  Источник: cloudfoundry/java-buildpack

В Elastic есть новый модуль APM для ELK, в котором есть инструментальный агент Java.
Вот примечания для быстрого старта:
https://www.elastic.co/blog/elastic-apm-java-agent-beta-released

Я пробовал создать ветку со стартом у агента.
https://github.com/kmacpher67/java-buildpack/tree/elastic-apm-agent

Мне проще собрать это вместе и сделать для вас Pull Request, чтобы выполнить слияние?
или вам просто нужно это сделать?
Сообщите мне, что лучше всего подходит для вас.

Приветствую любые критические комментарии по поводу моей существующей кодовой базы.

framework

Все 28 Комментарий

Спасибо за терпеливость. Я только что начал это просматривать, но когда я просматриваю ваш форк, похоже, что вы не внесли никаких изменений в свою ветку.

image

В целом, похоже, что интеграция действительно проста. Я бы предпочел, чтобы вы отправили PR для этого, и его основание на чем-то вроде агента Azure Application Insights должно дать вам хорошее начало.

Я подтолкнул локальные изменения git.
Добавлен:

   new file:   config/elastic_apm_agent.yml
   new file:   lib/java_buildpack/framework/elastic_apm_agent.rb

В основном следовал образцу New Relic.
Спасибо и извините за неудачу с базовым git commit / push. :(

Это выглядит достаточно близко, чтобы представить его в качестве официального PR для проверки. Нам нужно внести некоторые изменения, но ничего серьезного.

Что мне нужно сделать, чтобы это было объединено?
Мне нужно что-нибудь делать?
Я собираюсь протестировать это с помощью своей собственной ветки?

Я объединил свою удаленную ветку с мастером, обновил документы и некоторые другие элементы, которые, по-видимому, необходимы для работы нового кода ElasticApmAgent и конфигурации yml.
Теперь в разделе релиза вылетает ошибка.
Далее я включил отладку по этому документу:
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/debugging-the-buildpack.md
Теперь я получаю безумное количество журналов.
Не похоже
КОНЕЦ подробного журнала: похоже, основная ошибка;
Не удалось создать выпуск дроплета: выходные данные buildpack недействительны: yaml: строка 1: значения сопоставления недопустимы в этом контексте
Статус выхода 224

       Verify return code: 0 (ok)
   [DownloadCache]                  DEBUG Adding If-None-Match: 
   [DownloadCache]                  DEBUG Adding If-Modified-Since: 
   [DownloadCache]                  DEBUG Request: /openjdk/trusty/x86_64/index.yml, {"accept-encoding"=>["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"], "accept"=>["*/*"], "user-agent"=>["Ruby"]}
   [DownloadCache]                  DEBUG Response headers: {"content-type"=>["text/x-yaml"], "content-length"=>["6227"], "connection"=>["keep-alive"], "date"=>["Tue, 22 Jan 2019 18:34:54 GMT"], "last-modified"=>["Tue, 22 Jan 2019 18:34:23 GMT"], "etag"=>["\"61babcae65885e33a81b9078176785d5\""], "x-amz-version-id"=>["oQHGk1CwR3mNyQMDuR6_DuJKNdm2PbIi"], "accept-ranges"=>["bytes"], "server"=>["AmazonS3"], "age"=>["3722369"], "x-cache"=>["Hit from cloudfront"], "via"=>["1.1 b27a02320ae6ae78c5c25db5c9ccb9dc.cloudfront.net (CloudFront)"], "x-amz-cf-id"=>["xRlMS_-Z0kqEG_zuTj2NRhtlrybv38Fl4u2ZL6DK2IpRdT4tYYOrFw=="]}
   [DownloadCache]                  DEBUG Response status: 200
   [DownloadCache]                  DEBUG Persisting Etag: "61babcae65885e33a81b9078176785d5"
   [DownloadCache]                  DEBUG Persisting Last-Modified: Tue, 22 Jan 2019 18:34:23 GMT
   [DownloadCache]                  DEBUG Persisting content to /tmp/06e39cddcbd90ad303ff803a925d6614266c3d55f875c5f1ca2c4180056d5b04.cached
   [DownloadCache]                  DEBUG Validated content size 6227 is 6227
   [RepositoryIndex]                DEBUG {"1.7.0_06"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_06.tar.gz", "1.7.0_07"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_07.tar.gz", "1.7.0_08"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_08.tar.gz", "1.7.0_09"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_09.tar.gz", "1.7.0_10"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_10.tar.gz", "1.7.0_11"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_11.tar.gz", "1.7.0_12"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_12.tar.gz", "1.7.0_13"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_13.tar.gz", "1.7.0_14"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_14.tar.gz", "1.7.0_15"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_15.tar.gz", "1.7.0_17"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_17.tar.gz", "1.7.0_21"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_21.tar.gz", "1.7.0_25"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_25.tar.gz", "1.7.0_40"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_40.tar.gz", "1.7.0_45"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_45.tar.gz", "1.7.0_51"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_51.tar.gz", "1.7.0_55"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_55.tar.gz", "1.7.0_60"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_60.tar.gz", "1.7.0_65"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_65.tar.gz", "1.7.0_71"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_71.tar.gz", "1.7.0_75"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_75.tar.gz", "1.7.0_79"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.7.0_79.tar.gz", "1.8.0_00"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0.tar.gz", "1.8.0_05"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_05.tar.gz", "1.8.0_101"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_101.tar.gz", "1.8.0_111"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_111.tar.gz", "1.8.0_11"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_11.tar.gz", "1.8.0_121"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz", "1.8.0_131"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_131.tar.gz", "1.8.0_141"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_141.tar.gz", "1.8.0_144"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_144.tar.gz", "1.8.0_152"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_152.tar.gz", "1.8.0_161"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_161.tar.gz", "1.8.0_162"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_162.tar.gz", "1.8.0_172"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_172.tar.gz", "1.8.0_181"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_181.tar.gz", "1.8.0_191"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_191.tar.gz", "1.8.0_192"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_192.tar.gz", "1.8.0_201"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_201.tar.gz", "1.8.0_202"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_202.tar.gz", "1.8.0_20"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_20.tar.gz", "1.8.0_25"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_25.tar.gz", "1.8.0_31"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_31.tar.gz", "1.8.0_40"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_40.tar.gz", "1.8.0_45"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_45.tar.gz", "1.8.0_51"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_51.tar.gz", "1.8.0_60"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_60.tar.gz", "1.8.0_65"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_65.tar.gz", "1.8.0_71"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_71.tar.gz", "1.8.0_73"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_73.tar.gz", "1.8.0_77"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_77.tar.gz", "1.8.0_91-unlimited-crypto"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_91-unlimited-crypto.tar.gz", "1.8.0_91"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_91.tar.gz", "1.8.0_RC1"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_RC1.tar.gz", "10.0.0_46"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-10.0.0_46.tar.gz", "10.0.1_10"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-10.0.1_10.tar.gz", "10.0.2_13"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-10.0.2_13.tar.gz", "11.0.0_28"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-11.0.0_28.tar.gz", "11.0.1_13"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-11.0.1_13.tar.gz", "11.0.2_07"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-11.0.2_07.tar.gz", "11.0.2_09"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-11.0.2_09.tar.gz", "9.0.0_181"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-9.0.0_181.tar.gz", "9.0.1_11"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-9.0.1_11.tar.gz", "9.0.4_11"=>"https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-9.0.4_11.tar.gz"}
   [ConfigurationUtils]             DEBUG Configuration from /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/java_main.yml: {"java_main_class"=>nil, "arguments"=>nil}
   [Buildpack]                      DEBUG Release Payload:
   ---
   addons: []
   config_vars: {}
   default_process_types:
     web: 'JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.16.0_RELEASE=printHeapHistogram=1
       -XX:ActiveProcessorCount=$(nproc) -Djava.io.tmpdir=$TMPDIR -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext
       -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS"
       && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.13.0_RELEASE
       -totMemory=$MEMORY_LIMIT -loadedClasses=23908 -poolType=metaspace -stackThreads=250
       -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY
       && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT
       eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher'
     task: 'JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.16.0_RELEASE=printHeapHistogram=1
       -XX:ActiveProcessorCount=$(nproc) -Djava.io.tmpdir=$TMPDIR -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext
       -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS"
       && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.13.0_RELEASE
       -totMemory=$MEMORY_LIMIT -loadedClasses=23908 -poolType=metaspace -stackThreads=250
       -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY
       && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT
       eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher'
   Failed to build droplet release: buildpack's release output invalid: yaml: line 1: mapping values are not allowed in this context
   Exit status 224
   Cell 53d3700d-cd4d-46dd-9e38-67da5100086b stopping instance 8237ff17-026b-45c2-b21c-a62d5e95038d
   Cell 53d3700d-cd4d-46dd-9e38-67da5100086b destroying container for instance 8237ff17-026b-45c2-b21c-a62d5e95038d
   Cell 53d3700d-cd4d-46dd-9e38-67da5100086b successfully destroyed container for instance 8237ff17-026b-45c2-b21c-a62d5e95038d
FAILED

Я добавил в код отладочные операторы печати, чтобы видеть, что происходит:
CONFIG делает это там:
[Droplet] DEBUG Sandbox root: /tmp/app/.java-buildpack/dynatrace_one_agent [Buildpack] DEBUG Instantiating JavaBuildpack::Framework::ElasticApmAgent [Buildpack] DEBUG Successfully required JavaBuildpack::Framework::ElasticApmAgent [ConfigurationUtils] DEBUG Configuration from /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/elastic_apm_agent.yml: {"version"=>"1.1.0", "repository_root"=>"https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/", "repository_download"=>"https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.1.0/elastic-apm-agent-1.1.0.jar"} [Droplet] DEBUG Droplet root: /tmp/app [Droplet] DEBUG Buildpack root: /tmp/app/.java-buildpack [Droplet] DEBUG Sandbox root: /tmp/app/.java-buildpack/elastic_apm_agent [Buildpack] DEBUG Instantiating JavaBuildpack::Framework::GoogleStackdriverDebugger
поддерживает? - ElasticApmAgent <JavaBuildpack :: Component :: VersionedDependencyComponent
отображается в журнале, но операторы печати отладки для компиляции и выпуска не отображаются.
Смотрите код здесь:
https://github.com/kmacpher67/java-buildpack/blob/master/lib/java_buildpack/framework/elastic_apm_agent.rb#L29

аххх выпускной шаг вызывает конфигурацию.
ага, часть 2: клавиши чувствительны к регистру.

cf update-user-provided-service elasticapm -p 'server_urls, application_packages'
Ранее я обновлял службу, используя ВСЕ имена ключей в верхнем регистре, где были имена переменных в коде .rb. :( не круты: плохая обработка ошибок SERVER_URLSSERVER_URLS, APPLICATION_PACKAGES в этой базе кода.
ПРИМЕЧАНИЕ ДЛЯ БУДУЩЕГО:

Хорошо, у меня сейчас такая проблема:

[ConfigurationUtils]             DEBUG Configuration from /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/elastic_apm_agent.yml: {"version"=>"1.1.0", "repository_root"=>"https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/", "repository_download"=>"https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.1.0/elastic-apm-agent-1.1.0.jar"}

   [RepositoryIndex]                DEBUG https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/ expanded to https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent

   [DownloadCache]                  DEBUG Request: /maven2/co/elastic/apm/elastic-apm-agent/index.yml, {"accept-encoding"=>["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"], "accept"=>["*/*"], "user-agent"=>["Ruby"]}
   [DownloadCache]                  DEBUG Response headers: {"last-modified"=>["Wed, 10 Aug 2016 15:08:35 GMT"], "etag"=>["\"1fb066da6a67c7c02962f59b4b8cd1ee\""], "x-amz-error-code"=>["NoSuchKey"], "x-amz-error-message"=>["The specified key does not exist."], "x-amz-error-detail-key"=>["maven2/co/elastic/apm/elastic-apm-agent/index.yml"], "content-type"=>["text/html"], "via"=>["1.1 varnish", "1.1 varnish"], "content-length"=>["554"], "accept-ranges"=>["bytes"], "date"=>["Thu, 07 Mar 2019 16:18:19 GMT"], "age"=>["0"], "connection"=>["keep-alive"], "x-served-by"=>["cache-iad2126-IAD, cache-bwi5024-BWI"], "x-cache"=>["MISS, MISS"], "x-cache-hits"=>["0, 0"], "x-timer"=>["S1551975499.474858,VS0,VE25"]}
   [DownloadCache]                  DEBUG Response status: 404
   [DownloadCache]                  WARN  Request failure 1, retrying after 5s.  Failure: 404 Not Found

Он пытается найти несуществующий файл /maven2/co/elastic/apm/elastic-apm-agent/index.yml.
Дерьмо, репозиторий maven не поддерживает index.yml
http://central.maven.org/maven2/co/elastic/apm/elastic-apm-agent/
Что делать дальше, чтобы обойти это?

После обширного взлома (недопустимые uris, неправильные def требует блоков обнаружения и т. Д.) И исправлений:
в итоге идёт с download_jar(<strong i="6">@version</strong>, <strong i="7">@uri</strong>, <strong i="8">@jar_name</strong> )
Я получаю эту ошибку, вероятно, из-за обширного взлома, которого я не должен был делать.

   addons: []
   config_vars: {}
   default_process_types:
     web: 'JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.16.0_RELEASE=printHeapHistogram=1
       -XX:ActiveProcessorCount=$(nproc) -Djava.io.tmpdir=$TMPDIR -Delastic.apm.log_file_name=STDOUT
       -Delastic.apm.server_urls=http://elk5-sts1-a.sapphirepri.com -Delastic.apm.application_packages=kenmac
       was here! -Delastic.apm.elastic.apm.service_name=sts1-TherapyReportTemplates-Server-kentest
       -javaagent:$PWD/.java-buildpack/elastic_apm_agent/elastic-apm-agent.jar -Delkapmagent.home=$PWD/.java-buildpack/elastic_apm_agent
       -Delastic.apm.application_packages.enable.java.8=true -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext
       -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS"
       && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.13.0_RELEASE
       -totMemory=$MEMORY_LIMIT -loadedClasses=25019 -poolType=metaspace -stackThreads=250
       -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY
       && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT
       eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher'
     task: 'JAVA_OPTS="-agentpath:$PWD/.java-buildpack/open_jdk_jre/bin/jvmkill-1.16.0_RELEASE=printHeapHistogram=1
       -XX:ActiveProcessorCount=$(nproc) -Djava.io.tmpdir=$TMPDIR -Delastic.apm.log_file_name=STDOUT
       -Delastic.apm.server_urls=http://elk5-sts1-a.sapphirepri.com -Delastic.apm.application_packages=kenmac
       was here! -Delastic.apm.elastic.apm.service_name=sts1-TherapyReportTemplates-Server-kentest
       -javaagent:$PWD/.java-buildpack/elastic_apm_agent/elastic-apm-agent.jar -Delkapmagent.home=$PWD/.java-buildpack/elastic_apm_agent
       -Delastic.apm.application_packages.enable.java.8=true -Djava.ext.dirs=$PWD/.java-buildpack/container_security_provider:$PWD/.java-buildpack/open_jdk_jre/lib/ext
       -Djava.security.properties=$PWD/.java-buildpack/java_security/java.security $JAVA_OPTS"
       && CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-3.13.0_RELEASE
       -totMemory=$MEMORY_LIMIT -loadedClasses=25019 -poolType=metaspace -stackThreads=250
       -vmOptions="$JAVA_OPTS") && echo JVM Memory Configuration: $CALCULATED_MEMORY
       && JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT
       eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher'
   Failed to build droplet release: buildpack's release output invalid: yaml: line 1: mapping values are not allowed in this context
   Exit status 224

@nebhale

Требуется ли index.yml в репозитории maven под
https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent?

Как лучше всего разместить index.yml? Есть ли другие распространенные места (github и т. Д.)

Обычно люди просто размещают двоичные файлы где угодно. Итак, если вы посмотрите на config/add_dynamics_agent.yml они просто размещаются где-то в своем собственном домене.

Это наш предпочтительный вариант (разрешить проектам поддерживать репо и обновлять по мере необходимости), но если это слишком большая нагрузка, у нас есть проект java-buildpack-dependency-builder котором мы реплицируем зависимости в кеш, размещенный в Cloud Foundry. Фонд. Для этого существуют некоторые ограничения, связанные с лицензированием и доступностью загрузки, но мы можем изучить их при необходимости.

Спасибо....

Извините за непонятливость / Чтобы прояснить:

а) Мы можем разместить двоичные файлы там, где захотим, для нас maven repo

б) мы можем разместить index.yml, который указывает на эти двоичные файлы в

https://github.com/cloudfoundry/java-buildpack/tree/master/config/add_elastic_agent.yml

c) И для этого мы открываем пул реквест. мы станем спонсорами CF, подписав CLA

Правильный?

Есть ли порядок добавления buildpack + index.yml, чтобы все это происходило в рамках одного PR?

Совершенно никаких проблем.

  1. Бинарные файлы можно разместить где угодно.
  2. index.yml используется для косвенного обращения к этим двоичным файлам. Таким образом, должен быть некоторый URI U , такой, что U/index.yml существует и содержит хеш YAML версий для загрузки URI. Так, например, вы можете разместить https://raw.githubusercontent.com/elastic/apm-agent-java/master/index.yml со ссылками на Maven Central, а ваш config/elastic_apm_agent.yml будет включать repository_root: https://raw.githubusercontent.com/elastic/apm-agent-java/master .

В целях тестирования я сделал это «рекурсивно» с тем же репозиторием кода, в котором размещены файлы jar, чтобы получить репозиторий для сборки, но я все еще получаю ошибки выпуска.

@bvader
https://github.com/kmacpher67/java-buildpack/tree/master/elastic-repo
Если вы скопируете этот подкаталог в репозиторий elastic как предлагает Бен, тогда вы могли бы поместить туда свои двоичные файлы, я мог бы обновить это репо, чтобы указать на эти необработанные файлы.

@nebhale, у меня все еще возникают ужасные ошибки типа "разное":
`` `[ConfigurationUtils] Конфигурация DEBUG из /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/java_main.yml: {" java_main_class "=> nil," arguments "=> nil}
[Buildpack] Полезные данные выпуска DEBUG:


дополнения: []
config_vars: {}
default_process_types:
web: 'JAVA_OPTS = "- путь к агенту: $ PWD / .java-buildpack / open_jdk_jre / bin / jvmkill-1.16.0_RELEASE = printHeapHistogram = 1
-XX: ActiveProcessorCount = $ (nproc) -Djava.io.tmpdir = $ TMPDIR -javaagent: $ PWD / .java-buildpack / elastic_apm_agent / elastic_apm_agent-1.4.0.jar
-Delkapmagent.home = $ PWD / .java-buildpack / elastic_apm_agent -Delastic.apm.application_packages.enable.java.8 = true
-Djava.ext.dirs = $ PWD / .java-buildpack / container_security_provider: $ PWD / .java-buildpack / open_jdk_jre / lib / ext
-Djava.security.properties = $ PWD / .java-buildpack / java_security / java.security $ JAVA_OPTS "
&& CALCULATED_MEMORY = $ ($ PWD / .java-buildpack / open_jdk_jre / bin / java-buildpack-memory-Calculator-3.13.0_RELEASE
-totMemory = $ MEMORY_LIMIT -loadedClasses = 25019 -poolType = metaspace -stackThreads = 250
-vmOptions = "$ JAVA_OPTS") && echo Конфигурация памяти JVM: $ CALCULATED_MEMORY
&& JAVA_OPTS = "$ JAVA_OPTS $ CALCULATED_MEMORY" && MALLOC_ARENA_MAX = 2 SERVER_PORT = $ PORT
eval exec $ PWD / .java-buildpack / open_jdk_jre / bin / java $ JAVA_OPTS -cp $ PWD /. org.springframework.boot.loader.JarLauncher '
задача: 'JAVA_OPTS = "- путь к агенту: $ PWD / .java-buildpack / open_jdk_jre / bin / jvmkill-1.16.0_RELEASE = printHeapHistogram = 1
-XX: ActiveProcessorCount = $ (nproc) -Djava.io.tmpdir = $ TMPDIR -javaagent: $ PWD / .java-buildpack / elastic_apm_agent / elastic_apm_agent-1.4.0.jar
-Delkapmagent.home = $ PWD / .java-buildpack / elastic_apm_agent -Delastic.apm.application_packages.enable.java.8 = true
-Djava.ext.dirs = $ PWD / .java-buildpack / container_security_provider: $ PWD / .java-buildpack / open_jdk_jre / lib / ext
-Djava.security.properties = $ PWD / .java-buildpack / java_security / java.security $ JAVA_OPTS "
&& CALCULATED_MEMORY = $ ($ PWD / .java-buildpack / open_jdk_jre / bin / java-buildpack-memory-Calculator-3.13.0_RELEASE
-totMemory = $ MEMORY_LIMIT -loadedClasses = 25019 -poolType = metaspace -stackThreads = 250
-vmOptions = "$ JAVA_OPTS") && echo Конфигурация памяти JVM: $ CALCULATED_MEMORY
&& JAVA_OPTS = "$ JAVA_OPTS $ CALCULATED_MEMORY" && MALLOC_ARENA_MAX = 2 SERVER_PORT = $ PORT
eval exec $ PWD / .java-buildpack / open_jdk_jre / bin / java $ JAVA_OPTS -cp $ PWD /. org.springframework.boot.loader.JarLauncher '
Не удалось создать выпуск дроплета: выходные данные buildpack недействительны: yaml: unmarshal errors:
строка 1: невозможно распаршалировать !! str Downloa... в buildpackrunner.
Статус выхода 224 ''

Бен, если я просто повторно отправлю то, что у меня есть, мне нужно, чтобы я исправил эти разные ошибки выпуска.
Мне тоже нужна спецификация. Я этого еще не делал.
Сейчас я использую основную ветку, я не мог понять, как загрузить ветку через манифест.
Итак, я просто слился с моим мастером репозиториев.
https://github.com/kmacpher67/java-buildpack
Дай мне знать, что делать.

Это почти наверняка потому, что вы что-то выводите на консоль на этапе выпуска. stdout резервируется на этом этапе для передачи полезной нагрузки конфигурации процесса.

Как только вы упростите код, чтобы использовать все наши действия при загрузке и сопоставить с другими проектами интеграции APM, я думаю, вы обнаружите, что эта проблема исчезнет.

@ kmacpher67 @nebhale

@bvader
https://github.com/kmacpher67/java-buildpack/tree/master/elastic-repo
Если вы скопируете этот подкаталог в репозиторий elastic как предлагает Бен, тогда вы могли бы поместить туда свои двоичные файлы, я мог бы обновить это репо, чтобы указать на эти необработанные файлы.

Я работаю с нашим техническим руководителем по агенту Elastic Java APM. Мы работаем над вариантами / решениями конфигурации. Я подозреваю, что мы оставим двоичные файлы в репозитории maven, поскольку вся наша другая документация / зависимости полагаются на это.

Вы можете увидеть это обсуждение здесь.
https://github.com/elastic/apm-agent-java/issues/523#issuecomment -472604463

@ kmacpher67 Оцените ваши усилия в этом направлении!

Я думаю, мы хотели бы обновить документацию для агента Elastic APM, возможно, они не должны быть специфичными для JRebel. Может быть, мне что-то не хватает, но разве это не должна быть просто общая документация пакета сборки для Elastic APM?

Я имею в виду:
https://github.com/kmacpher67/java-buildpack/blob/master/docs/framework-elastic_apm_agent.md

Также похоже, что есть ряд дополнительных параметров, которые могут / должны поддерживаться. может быть, после того, как мы получим этот первоначальный PR в команде Elastic, мы сможем взглянуть и обновить.

https://github.com/kmacpher67/java-buildpack/blob/master/lib/java_buildpack/framework/elastic_apm_agent.rb

Пример secret_token - очень важная конфигурация.
https://www.elastic.co/guide/en/apm/agent/java/current/config-reporter.html#config -secret-token

Команда Elastic надеется внести свой вклад.

@nebhale работает над CLA, поверьте, мы с вами пересеклись, я был вице-президентом по инжинирингу. в CoreLogic, где мы использовали PCF / Labs, помогаем создавать лаборатории в SaMo теперь в Elastic

@nebhale, есть ли у вас планы на прямую поддержку репозиториев maven? На https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/maven-metadata.xml должна быть доступна вся необходимая информация, только формат немного отличается.

Например

maven_repository_root: https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent
maven_artifact: elastic-apm-agent-$version.jar

@bvader
Я обновил документацию по агенту.
Добавлено переопределение службы для secret_token
ttps: //github.com/kmacpher67/java-buildpack

Мы добавляем дополнительный файл свойств, у вас есть образец, который я могу + добавить в репо:
В пакете сборки есть место для этого:
https://github.com/kmacpher67/java-buildpack/tree/master/resources

+1 голосование за поддержку maven XML, я бы написал это, но я не программист на Ruby, и я сомневаюсь, что люди cf дадут другим агентам такую ​​же ситуацию. Было бы идеально, если бы вы могли добавить index.yml, если нет, дайте мне знать, я проверю вышеупомянутый проект, чтобы получить ключевых людей для постановки этого элемента.

Я сомневаюсь, что сотрудники CF скажут, что у других агентов такая же ситуация

Думаю, это аргумент в пользу добавления поддержки maven - это упростило бы задачу не только для Elastic APM, но и для других 🙂

А пока я добавил index.yml в репозиторий github: https://github.com/elastic/apm-agent-java/pull/524

@ kmacpher67

Index.yml теперь можно найти по адресу:
https://raw.githubusercontent.com/elastic/apm-agent-java/master/cloudfoundry/index.yml

1) Спасибо за обновление secret_token

2) Что касается документации, я все еще очень запутался во всех ссылках JRebel и обнаружении JRebel и т. Д. Агент Elastic APM / buildpack не должен иметь каких-либо сторонних зависимостей / ссылок и гиперссылок на JRebel. Вскоре мы сможем предоставить инструкции в документации по Elastic Java APM.

Я ожидал, что эта страница будет больше похожа на страницу New Relic. Или, возможно, мне что-то полностью не хватает, и это как-то тесно связано с JRebel.

https://github.com/cloudfoundry/java-buildpack/blob/master/docs/framework-new_relic_agent.md

Я рад помочь вам через вашу вилку или как только мы объединимся. Возможно, для начала просто выньте все ссылки JRebel.

пример

Эластичная структура агента APM

Elastic APM Agent Framework заставляет приложение автоматически настраиваться для работы с привязанной службой Elastic APM.

Критерий обнаружения | Существование единой связанной службы New Relic. Существование службы New Relic определяется как полезная нагрузка VCAP_SERVICES содержащая службу, имя, метка или тег которой содержит elastic-apm в качестве подстроки.
- | -
Теги | elastic-agent=<version>

3) У нас есть неофициальный файл свойств, но все свойства имеют разумные значения по умолчанию, давайте слить без этого. Мне нужно будет привлечь команду инженеров и т. Д., И мы можем добавить это позже, если это абсолютно не требуется вначале.

@nebhale Можно ли сначала отметить это как "бета-версия или экспериментальная версия"? Или это просто входит, и мы повторяем, я немного не понимаю процесс. Elastic захочет повторить эту замечательную работу, которую @ kmacpher67 положил в основу.

исправить копирование и вставку документации. убрал jrebel zero refs.

Я все еще получаю какие-то журналы консоли Downloa... в полезной нагрузке выпуска

   Failed to build droplet release: buildpack's release output invalid: yaml: unmarshal errors:
     line 1: cannot unmarshal !!str `Downloa...` into buildpackrunner.Release
   Exit status 224

похоже, что он исходит из следующей оболочки golang.
https://github.com/cloudfoundry/buildpackapplifecycle/blob/master/buildpackrunner/runner.go#L484
Должен ли я просто запросить Pull Request из моего основного репо?
Последнее обновление работает с указанием на index.yml, расположенный в Elastic.

@nebhale Можно ли сначала отметить это как "бета-версия или экспериментальная версия"? Или это просто входит, и мы повторяем, я немного не понимаю процесс. Elastic захочет повторить эту замечательную работу, которая

Я написал для этого специальные тесты, я серьезно сомневаюсь в качестве тестов, так как у меня нет ruby, работающего локально.
Я взламывал и вставлял изменения пакета сборки в пространство приложения cf.

Код теста:
https://github.com/kmacpher67/java-buildpack/blob/368dc9cc1a08670b49cdbf9d226eaae220ab4b77/spec/java_buildpack/framework/elastic_apm_agent_spec.rb#L80

В идеале, как только я получу это рабочее развертывание в пространстве приложения CF, я вернусь к нашему экземпляру Elastic 6.4 и включу функции apm. Посмотрите, что там начинает стримить.

Ох. «Хэппи научился ударять !!» на самом деле я смог взглянуть на разницу и понял, что в downloadcache.rb все еще есть отладка, которую я забыл удалить. Lol.

       eval exec $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher'
   Exit status 0
   Uploading droplet, build artifacts cache...
   Uploading droplet...
   Uploading build artifacts cache...
   Uploaded build artifacts cache (52M)
   Uploaded droplet (106.1M)
   Uploading complete
   Cell 3f2ea5c4-31a0-487d-86f9-3020c48e4235 stopping instance 2001f7e3-9fb3-4936-ac28-ef571e1b86e2
   Cell 3f2ea5c4-31a0-487d-86f9-3020c48e4235 destroying container for instance 2001f7e3-9fb3-4936-ac28-ef571e1b86e2
   Cell 3f2ea5c4-31a0-487d-86f9-3020c48e4235 successfully destroyed container for instance 2001f7e3-9fb3-4936-ac28-ef571e1b86e2

Waiting for app to start...
     state     since                  cpu      memory         disk           details
#0   running   2019-03-14T17:39:16Z   296.8%   597.4M of 1G   192.4M of 1G  

Теперь он не вылетает! Позвольте мне обновить целевую ветвь pull.
Затем я исправлю мою локальную установку cf ELK6.4 для установки APM.
Посмотрите, что / если что-то сообщает.

@nebhale Вы хотите, чтобы я раздавил / растрепал коммиты? Там мои +600 итераций взлома в виде коммитов.

https://github.com/cloudfoundry/java-buildpack/pull/696

@bvader
он пытается попасть на несуществующий порт 8200 для apm. Мне нужно это настроить сейчас.
Есть ли у вас ридми для ленивых в кратком руководстве по настройке эластичного APM?
`` ''
2019-03-14T13: 39: 43.03-0400 [APP / PROC / WEB / 0] OUT 2019-03-14 17: 39: 43.037 [apm-reporter] ERROR co.elastic.apm.agent.report.IntakeV2ReportingEventHandler - Failed для обработки события типа METRICS с этой ошибкой: время ожидания подключения истекло
2019-03-14T13: 39: 43.03-0400 [APP / PROC / WEB / 0] OUT 2019-03-14 17: 39: 43.038 [apm-reporter] INFO co.elastic.apm.agent.report.IntakeV2ReportingEventHandler - Поддержка выключен на 1 секунду (± 10%) `` `

@ kmacpher67

Вы можете использовать это, если вам удобно работать с докером. Это выдержит немного Elastic, Kibana, среду Apm-Server.

https://gist.github.com/bvader/9665fa7b3bd69457517e41a7c28b4725

потом
TAG=6.6.2 docker-compose -f elastic-apm-compose.yml up

# After the stack is full running please go to, this is how you install / configure the Kibana / Elasticsearch side dashboards etc. 
http://localhost:5601/app/kibana#/home/tutorial/apm?_g=()

Вот пример Java-приложения с инструкциями для локальной Java ... и всем, что нужно проверить.
https://gist.github.com/bvader/cc9fea7e6f8f709dfa2ad14776eed7fe

Если вам просто нужен apm-сервер, я бы просто загрузил / установил и сделал минимальную конфигурацию. Я бы просто загрузил tar.gz и минимальную конфигурацию.

https://www.elastic.co/downloads/apm

Вам просто нужно настроить вывод для вашего экземпляра elasticsearch и хоста apm-server

apm-server:
  # Defines the host and port the server is listening on.  use "unix:/path/to.sock" to listen on a unix domain socket.
  host: "10.168.0.3:8200"

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  # Scheme and port can be left out and will be set to the default (http and 9200)
  # In case you specify and additional path, the scheme is required: http://localhost:9200/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:9200
  hosts: ["localhost:9200"]

  # Boolean flag to enable or disable the output module.
  #enabled: true

  # Set gzip compression level.
  #compression_level: 0

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"

Тогда беги

https://www.elastic.co/guide/en/apm/server/current/setting-up-and-running.html

./apm-server -e

Также следуйте инструкциям, вот как вы загружаете / настраиваете боковые панели управления Kibana / Elasticsearch и т. Д.

# After the stack is full running please go to
http://<kibanahost>:5601/app/kibana#/home/tutorial/apm?_g=()

@ kmacpher67 Сообщите мне, если вам нужна небольшая помощь / сотрудничество на сервере APM, возможно, мы сможем увеличить масштаб. Вы можете связаться со мной напрямую по электронной почте ...

Извините, если я сначала запутался в «Бета-версии или экспериментальной»? "комментарий Я только изучаю процесс CF и процесс построения пакета, I / We / Elastic / Сообщество OSS полностью признательно за ваши усилия и дух сообщества.

На следующей неделе я попытаюсь вытащить ваше репо, если оно не будет объединено, и попытаюсь установить / запустить на своей стороне.

@nebhale

Я думаю, мы готовы к тому, чтобы вы посмотрели на PR, когда будете готовы.

Я жду PULL запроса на слияние, но возник конфликт.
Запрошена проверка
Запрос был запрошен на рассмотрение. Сливаться не требуется.
@nebhale
Небхале был запрошен на рассмотрение
В этой ветке есть конфликты, которые необходимо разрешить
Только те, у кого есть доступ на запись в этот репозиторий, могут объединять запросы на включение.
Конфликтующие файлы

rakelib / versions_task.rb

Я думаю, мне нужно тщательно подобрать изменения и перенести их на последнюю версию, возможно, сделать новую ВИЛКУ на основе последней версии.
Я спросил в этой ветке MR, следует ли мне свернуть или отправить повторно.

Это должно быть закрыто по запросу на перенос.
https://github.com/cloudfoundry/java-buildpack/pull/696

Была ли эта страница полезной?
0 / 5 - 0 рейтинги