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.
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.
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.
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 repositorioelastic
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.
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 tieneelastic-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
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