Java-buildpack: soporte para el nuevo marco elástico-apm-agent

Creado en 6 dic. 2018  ·  28Comentarios  ·  Fuente: cloudfoundry/java-buildpack

Elastic tiene un nuevo módulo APM para ELK que tiene un agente de instrumentación de Java.
Aquí están las notas de inicio rápido:
https://www.elastic.co/blog/elastic-apm-java-agent-beta-released

Intenté crear una sucursal comenzando en un agente.
https://github.com/kmacpher67/java-buildpack/tree/elastic-apm-agent

¿Es más fácil para mí piratear esto juntos y hacer una solicitud de extracción para que usted haga una combinación?
o solo para que lo hagas?
Déjame saber qué funciona mejor para ti.

Bienvenido cualquier comentario crítico sobre mi base de código existente.

framework

Todos 28 comentarios

Gracias por su paciencia. Acabo de comenzar a revisar esto, pero cuando reviso su bifurcación, no parece que haya realizado ningún cambio en su rama.

image

Sin embargo, en general, parece que la integración es muy sencilla. Preferiría que envíe un PR para esto, y basarlo en algo como el Agente de Azure Application Insights debería darle una buena ventaja.

Empujé los cambios locales de git.
Adicional:

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

Básicamente siguió el patrón de New Relic.
Gracias y perdón por fallar en git commit / push básico. :(

Esto parece lo suficientemente cerca como para enviarlo como un RP formal para su revisión. Hay algunos cambios que debemos hacer, pero nada importante.

¿Qué debo hacer para que esto se fusione?
¿Necesito hacer algo?
¿Voy a probar esto usando mi rama personalizada?

Fusioné mi rama remota con el maestro, actualicé los documentos y algunos otros elementos que parecen ser necesarios para que el nuevo código ElasticApmAgent y la configuración de yml funcionen.
Ahora recibo un error en la sección de lanzamiento.
Además, encendí la depuración según este documento:
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/debugging-the-buildpack.md
Ahora estoy obteniendo una gran cantidad de registros.
No parece
FIN DEL registro detallado: el error principal parece;
Error al compilar la versión de droplet: la salida de la versión de buildpack no es válida: yaml: línea 1: los valores de mapeo no están permitidos en este contexto
Estado de salida 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

Agregué declaraciones de impresión de depuración al código para poder ver lo que estaba sucediendo:
CONFIG lo hace ahí:
[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
apoyos? - ElasticApmAgent <JavaBuildpack :: Component :: VersionedDependencyComponent
aparece en el registro, pero las declaraciones de impresión de depuración para compilar y liberar no.
Ver código aquí:
https://github.com/kmacpher67/java-buildpack/blob/master/lib/java_buildpack/framework/elastic_apm_agent.rb#L29

ahhh configuración de llamadas de paso de liberación.
ahha parte 2: las claves distinguen entre mayúsculas y minúsculas.

cf update-user-provide-service elasticapm -p 'server_urls, application_packages'
Anteriormente había actualizado el servicio usando TODOS los nombres de las teclas en mayúsculas, donde estaban los nombres de las variables en el código .rb. :( no son geniales: SERVER_URLSSERVER_URLS, el mal manejo de errores de APPLICATION_PACKAGES en esa base de código.
NOTA PARA EL FUTURO:

Ok, ahora tengo este problema:

[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

Está tratando de encontrar un archivo /maven2/co/elastic/apm/elastic-apm-agent/index.yml que no existe.
Mierda, el repositorio de maven no es compatible con index.yml
http://central.maven.org/maven2/co/elastic/apm/elastic-apm-agent/
¿Cuáles son los próximos pasos para solucionar este problema?

Después de una gran cantidad de piratería (uris no válidos, mala definición requerida detectar bloques, etc.) y revisiones:
eventualmente yendo con download_jar(<strong i="6">@version</strong>, <strong i="7">@uri</strong>, <strong i="8">@jar_name</strong> )
Recibo este error, probablemente debido a una extensa piratería donde no debería haberlo hecho.

   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

¿Es un requisito que index.yml en el repositorio de maven bajo
https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent?

¿Cuál es la mejor práctica para la ubicación de index.yml? ¿Hay otras ubicaciones comunes (github, etc.)

En general, las personas simplemente alojan archivos binarios en cualquier lugar que deseen. Entonces, si miras config/add_dynamics_agent.yml , el host está en algún lugar de su propio dominio.

Esta es nuestra opción preferida (permitir que los proyectos mantengan el repositorio y se actualicen según sea necesario), pero si eso es demasiado, tenemos el proyecto java-buildpack-dependency-builder donde replicamos las dependencias en un caché alojado por Cloud Foundry Fundación. Existen algunas limitaciones para esto en cuanto a la disponibilidad de licencias y descargas, pero podemos explorarlas si es necesario.

Gracias....

Perdón por ser denso / Así que para ser claro:

a) Podemos alojar los binarios donde queramos, para nosotros maven repo

b) podemos alojar el index.yml que apunta a esos binarios en

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

c) Y abriríamos una solicitud de extracción para hacer eso. nos convertiríamos en Colaboradores de CF al firmar el CLA

¿Correcto?

¿Hay alguna orden para agregar el paquete de compilación + index.yml? ¿Es necesario que todo suceda como parte del mismo PR?

No hay problema.

  1. Los binarios se pueden alojar en cualquier lugar que desee.
  2. El index.yml se usa para indirección a esos binarios. Por lo tanto, debe haber algún URI U , de modo que U/index.yml exista y contenga un hash YAML de versiones para descargar URI. Entonces, por ejemplo, podría alojar https://raw.githubusercontent.com/elastic/apm-agent-java/master/index.yml con enlaces a Maven Central y su config/elastic_apm_agent.yml incluiría repository_root: https://raw.githubusercontent.com/elastic/apm-agent-java/master .

Para propósitos de prueba, lo he hecho "recursivamente" con el mismo repositorio de código que aloja los archivos jar para que el repositorio se compile, pero todavía recibo errores de publicación.

@bvader
https://github.com/kmacpher67/java-buildpack/tree/master/elastic-repo
Si copia este subdirectorio en un repositorio elastic como sugiere Ben, entonces podría poner sus binarios allí, podría actualizar este repositorio para que apunte a esos archivos sin procesar.

@nebhale sigo recibiendo errores misceláneos horribles:
`` `[ConfigurationUtils] DEBUG Configuración de /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/java_main.yml: {" java_main_class "=> nil," argument "=> nil}
[Buildpack] Carga útil de lanzamiento DEBUG:


complementos: []
config_vars: {}
default_process_types:
web: 'JAVA_OPTS = "- ruta del agente: $ 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 Configuración de memoria 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 '
tarea: 'JAVA_OPTS = "- ruta del agente: $ 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 Configuración de memoria 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 '
Error al compilar la versión de droplet: la salida de la versión de buildpack no es válida: yaml: errores de unmarshal:
línea 1: no se puede deshacer !! str Downloa... en buildpackrunner.
Estado de salida 224```

Ben, ¿debería volver a enviar lo que tengo? ¿Me necesitas para resolver estos errores de liberación misceláneos?
Yo también necesito especificar. Yo no hice eso todavía.
Estoy usando la rama maestra ahora, no pude averiguar cómo hacer que la rama se cargue a través del manifiesto.
Así que me volví a fusionar con mi maestro de repositorios.
https://github.com/kmacpher67/java-buildpack
Déjame saber qué hacer.

Es casi seguro que esto se deba a que está enviando algo a la consola durante la fase de lanzamiento. stdout se reserva durante esa fase para comunicar la carga útil de la configuración del proceso.

Una vez que simplifique el código para utilizar todo nuestro comportamiento de descarga y hacer coincidir los otros diseños de integración de APM, creo que encontrará que este problema desaparecerá.

@ kmacpher67 @nebhale

@bvader
https://github.com/kmacpher67/java-buildpack/tree/master/elastic-repo
Si copia este subdirectorio en un repositorio elastic como sugiere Ben, entonces podría poner sus binarios allí, podría actualizar este repositorio para que apunte a esos archivos sin procesar.

Estoy trabajando con nuestro líder tecnológico para el agente APM de Elastic Java. Estamos trabajando en las opciones / decisiones de configuración. Sospecho que dejaremos los binarios en el repositorio de maven, ya que toda nuestra documentación / dependencias se basa en eso.

Puedes ver esta discusión aquí.
https://github.com/elastic/apm-agent-java/issues/523#issuecomment -472604463

@ kmacpher67 ¡ Aprecio su esfuerzo en esto!

Creo que nos gustaría actualizar los documentos para el agente de Elastic APM, tal vez no deberían ser específicos de JRebel. Tal vez me esté perdiendo algo, pero ¿no deberían ser solo documentos de paquete de compilación genéricos para Elastic APM?

Me refiero a:
https://github.com/kmacpher67/java-buildpack/blob/master/docs/framework-elastic_apm_agent.md

También parece que tal vez haya una serie de parámetros adicionales que pueden / deberían ser compatibles. tal vez después de que obtengamos este PR inicial en el equipo de Elastic podamos echarle un vistazo y actualizarlo.

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

Ejemplo secret_token es una configuración muy importante.
https://www.elastic.co/guide/en/apm/agent/java/current/config-reporter.html#config -secret-token

El equipo de Elastic espera poder contribuir.

@nebhale trabajando en CLA,

@nebhale , ¿tiene planes de admitir repositorios maven directamente? https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/maven-metadata.xml debe tener toda la información requerida disponible, solo que el formato es un poco diferente.

Por ejemplo

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

@bvader
Actualicé la documentación del agente.
Se agregó la anulación del servicio por secret_token
ttps: //github.com/kmacpher67/java-buildpack

Hay un archivo de propiedad opcional que agregamos, ¿tiene uno de muestra que pueda + agregar al repositorio?
El paquete de compilación tiene una ubicación para eso:
https://github.com/kmacpher67/java-buildpack/tree/master/resources

+1 voto para el soporte XML de maven, lo habría escrito, pero no soy un programador ruby ​​y dudo que la gente de cf lo haga si otros agentes tienen la misma situación. Sería ideal si pudiera agregar index.yml; de lo contrario, avíseme, revisaré el proyecto mencionado anteriormente para obtener la gente fundamental para organizar esos elementos.

Dudo que la gente de CF lo haga dado que otros agentes tienen la misma situación

Creo que este es un argumento para agregar soporte de maven, que lo haría no solo más fácil para Elastic APM, sino también para otros 🙂

Mientras tanto, he agregado index.yml al repositorio de github: https://github.com/elastic/apm-agent-java/pull/524

@ kmacpher67

El index.yml ahora se puede encontrar en:
https://raw.githubusercontent.com/elastic/apm-agent-java/master/cloudfoundry/index.yml

1) Gracias por la actualización de secret_token

2) Con respecto a la documentación, todavía estoy bastante confundido acerca de todas las referencias de JRebel y la detección de JRebel, etc. El agente / paquete de compilación de Elastic APM no debería tener dependencias / referencias de terceros e hipervínculos hacia JRebel. Pronto proporcionaremos instrucciones en los documentos de Elastic Java APM.

Espero que esta página se parezca más a la página de New Relic. O tal vez me estoy perdiendo algo por completo y esto de alguna manera está estrechamente relacionado con JRebel.

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

Estoy feliz de entrar y ayudar a través de su bifurcación o tan pronto como nos fusionemos. Quizás solo elimine toda la referencia de JRebel para comenzar.

ejemplo

Marco de agente de APM elástico

Elastic APM Agent Framework hace que una aplicación se configure automáticamente para trabajar con un Elastic APM Service vinculado.

Criterio de detección | Existencia de un solo servicio New Relic enlazado. La existencia de un servicio New Relic se define como la carga útil VCAP_SERVICES contiene un servicio cuyo nombre, etiqueta o etiqueta tiene elastic-apm como subcadena.
- | -
Etiquetas | elastic-agent=<version>

3) Tenemos un archivo de propiedades no oficial, pero todas las propiedades tienen valores predeterminados razonables, fusionemos sin eso. Necesitaré involucrar al equipo de ingeniería, etc. y podemos agregar eso más tarde a menos que sea absolutamente necesario al principio.

@nebhale ¿Hay alguna forma de marcar esto como "Beta o Experimental" al principio? ¿O simplemente entra e iteramos? No tengo claro el proceso. Elastic querrá repetir este gran trabajo que @ kmacpher67 ha proporcionado como base.

arreglar la documentación copiar y pegar. eliminado jrebel cero refs.

Todavía estoy obteniendo algún tipo de registros de consola de Downloa... en la carga útil de lanzamiento

   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

parece que proviene del siguiente contenedor de golang.
https://github.com/cloudfoundry/buildpackapplifecycle/blob/master/buildpackrunner/runner.go#L484
¿Debo solicitar la solicitud de extracción de mi repositorio principal?
La última actualización funciona apuntando al index.yml ubicado en Elastic.

@nebhale ¿Hay alguna forma de marcar esto como "Beta o Experimental" al principio? ¿O simplemente entra e iteramos? No tengo claro el proceso. Elastic querrá repetir este gran trabajo que

Escribí las pruebas de especificaciones para esto, dudo seriamente de la calidad de las pruebas ya que no tengo ruby ​​ejecutándose localmente.
He estado pirateando y empujando los cambios del paquete de compilación en un espacio de la aplicación cf.

Código de prueba:
https://github.com/kmacpher67/java-buildpack/blob/368dc9cc1a08670b49cdbf9d226eaae220ab4b77/spec/java_buildpack/framework/elastic_apm_agent_spec.rb#L80

Idealmente, una vez que consigo que esta implementación funcione en un espacio de aplicación CF, vuelvo a nuestra instancia de Elastic 6.4 y habilito las funciones de apm. Vea lo que comienza a transmitirse allí.

Oh. "¡Feliz aprendí a jugar al putt!" De hecho, pude ver una diferencia y me di cuenta de que todavía había problemas de depuración en downloadcache.rb que olvidé eliminar. Jajaja.

       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  

¡No choca ahora! Permítanme actualizar la rama de extracción de destino.
Luego, arreglaré mi instalación local cf ELK6.4 para que se instale APM.
Vea qué informes, si es que hay algo.

@nebhale ¿Quieres que aplaste / aplaste las confirmaciones? Ahí están mis +600 iteraciones de piratería allí como confirmaciones.

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

@bvader
está intentando acceder al port8200 no existente para el apm. Necesito configurar eso ahora.
¿Tiene un archivo Léame rápido para el perezoso en una guía de configuración de inicio rápido para elástico 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 - Error para manejar un evento de tipo METRICS con este error: se agotó el tiempo de espera de la conexión
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 - Respaldo apagado durante 1 segundo (± 10%) `` ``

@ kmacpher67

Puede usar esto si se siente cómodo con la ventana acoplable. Esto destacará un poco el entorno Elastic, Kibana, Apm-Server

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

Entonces
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=()

Aquí hay una aplicación Java de muestra con instrucciones para Java local ... y todo para probar.
https://gist.github.com/bvader/cc9fea7e6f8f709dfa2ad14776eed7fe

Si solo desea el servidor apm, simplemente descargaría / instalaría y haría la configuración mínima. Simplemente descargaría tar.gz y la configuración mínima.

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

Solo debería necesitar configurar la salida para su instancia de elasticsearch y el host del servidor apm

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"

Entonces corre

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

./apm-server -e

También siga las instrucciones, así es como carga / configura los paneles laterales de Kibana / Elasticsearch, etc.

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

@ kmacpher67 Avísame si quieres un poco de ayuda o colaborar en el servidor APM, quizás podamos hacer un zoom. Puedes contactarme directamente a mi correo electrónico ...

Oh, una disculpa si estaba confundido con el "Beta o Experimental" al principio. "comentario Estoy aprendiendo el proceso de CF y la construcción del proceso de buildpack, I / We / Elastic / The OSS Community aprecio totalmente su esfuerzo y espíritu comunitario.

La semana que viene intentaré bajar su repositorio si no está fusionado e intentar instalarlo / ejecutarlo por mi parte.

@nebhale

Creo que estamos listos para que eches un vistazo a las relaciones públicas cuando estés listo.

Estoy esperando la solicitud de combinación PULL, pero hay un conflicto.
Revisión solicitada
Se ha solicitado la revisión de esta solicitud de extracción. No es necesario fusionarse.
@nebhale
se solicitó la revisión de nebhale
Esta rama tiene conflictos que deben resolverse
Solo aquellos con acceso de escritura a este repositorio pueden fusionar solicitudes de extracción.
Archivos en conflicto

rakelib / versions_task.rb

Creo que necesito seleccionar los cambios y moverlos a la última versión, tal vez hacer una nueva FORK basada en la última versión.
Pregunté en este hilo de MR, si debería colapsar o volver a enviar.

Esto debe cerrarse por solicitud de extracción
https://github.com/cloudfoundry/java-buildpack/pull/696

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

CAFxX picture CAFxX  ·  13Comentarios

edeandrea picture edeandrea  ·  4Comentarios

metacubed picture metacubed  ·  6Comentarios

aknobloch picture aknobloch  ·  8Comentarios

thorntonrp picture thorntonrp  ·  4Comentarios