Java-buildpack: prise en charge du nouveau framework elastic-apm-agent

Créé le 6 déc. 2018  ·  28Commentaires  ·  Source: cloudfoundry/java-buildpack

Elastic a un nouveau module APM pour ELK qui a un agent d'instrumentation Java.
Voici les notes de démarrage rapide :
https://www.elastic.co/blog/elastic-apm-java-agent-beta-released

J'ai essayé de créer une succursale en commençant par un agent.
https://github.com/kmacpher67/java-buildpack/tree/elastic-apm-agent

Est-il plus facile pour moi de pirater cela ensemble et de faire une demande de tirage pour que vous puissiez fusionner ?
ou pour vous juste de le faire ?
Faites-moi savoir ce qui fonctionne le mieux pour vous.

Bienvenue à tout commentaire critique sur ma base de code existante.

framework

Tous les 28 commentaires

Merci pour votre patience. Je viens juste de regarder cela, mais lorsque j'examine votre fork, il ne semble pas que vous ayez apporté des modifications à votre branche.

image

En général, cependant, il semble que l'intégration soit vraiment simple. Je préférerais que vous soumettiez un PR pour cela, et le baser sur quelque chose comme l' agent Azure Application Insights devrait vous donner une bonne longueur d'avance.

J'ai poussé les changements locaux de git.
Ajoutée:

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

Fondamentalement, j'ai suivi le modèle de New Relic.
Merci et désolé d'avoir échoué au commit/push de base de git. :(

Cela semble suffisamment proche pour être soumis en tant que PR formel pour examen. Il y a des changements que nous devons faire, mais rien de majeur.

Que dois-je faire pour que cela soit fusionné ?
Dois-je faire quelque chose ?
Je vais tester cela en utilisant ma branche personnalisée?

J'ai fusionné ma branche distante dans le maître, mis à jour la documentation et d'autres éléments qui semblent être nécessaires pour que le nouveau code ElasticApmAgent et la configuration yml fonctionnent.
Maintenant, j'obtiens une erreur dans la section de version.
De plus, j'ai activé le débogage selon ce document :
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/debugging-the-buildpack.md
Maintenant, je reçois une quantité folle de journalisation.
ça n'a pas l'air
END OF détaillé log : l'erreur principale ressemble à ;
Échec de la compilation de la version du droplet : la sortie de la version du pack de compilation n'est pas valide : yaml : ligne 1 : les valeurs de mappage ne sont pas autorisées dans ce contexte
Statut de sortie 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

J'ai ajouté des instructions d'impression de débogage au code afin que je puisse voir ce qui se passait :
CONFIG y parvient :
[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
les soutiens? - ElasticApmAgent < JavaBuildpack::Component::VersionedDependencyComponent
apparaît dans le journal, mais pas les instructions d'impression de débogage pour la compilation et la publication.
Voir le code ici :
https://github.com/kmacpher67/java-buildpack/blob/master/lib/java_buildpack/framework/elastic_apm_agent.rb#L29

ahhh l'étape de publication appelle la configuration.
ahha partie 2: les touches sont sensibles à la casse.

cf update-user-provided-service elasticapm -p 'server_urls, application_packages'
J'avais précédemment mis à jour le service en utilisant TOUS les noms de clés en majuscules, où se trouvaient les noms de variables dans le code .rb. :( ne sont pas cool : SERVER_URLSSERVER_URLS, mauvaise gestion des erreurs d'APPLICATION_PACKAGES dans cette base de code.
REMARQUE POUR L'AVENIR :

Ok, j'ai ce problème maintenant :

[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

Il essaie de trouver un fichier /maven2/co/elastic/apm/elastic-apm-agent/index.yml qui n'existe pas.
Merde, le dépôt maven ne prend pas en charge index.yml
http://central.maven.org/maven2/co/elastic/apm/elastic-apm-agent/
Quelles sont les prochaines étapes pour contourner ce problème ?

Après une quantité importante de piratage (uris invalides, blocs de détection requis par une mauvaise définition, etc.) et de révisions :
finalement aller avec download_jar(<strong i="6">@version</strong>, <strong i="7">@uri</strong>, <strong i="8">@jar_name</strong> )
J'obtiens cette erreur, probablement en raison d'un piratage intensif où je n'aurais pas dû le faire.

   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

Est-ce une exigence que index.yml dans le référentiel maven sous
https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent?

Quelle est la meilleure pratique pour l'emplacement du fichier index.yml ? Existe-t-il d'autres emplacements communs (github, etc.)

En général, les gens hébergent simplement des binaires où ils veulent. Donc, si vous regardez config/add_dynamics_agent.yml ils hébergent simplement quelque part sur leur propre domaine.

C'est notre option préférée (autoriser les projets à maintenir le référentiel et à mettre à jour si nécessaire), mais si c'est trop lourd, nous avons le projet java-buildpack-dependency-builder où nous répliquons les dépendances dans un cache hébergé par Cloud Foundry Fondation. Il existe certaines limitations concernant les licences et la disponibilité des téléchargements, mais nous pouvons les explorer si nécessaire.

Merci....

Désolé d'être dense / Donc pour être clair :

a) Nous pouvons héberger les binaires où nous voulons, pour nous maven repo

b) nous pouvons héberger le fichier index.yml qui pointe vers ces binaires à

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

c) Et nous ouvririons une pull request pour le faire. nous deviendrions des contributeurs des FC en signant le CLA

Correct?

Y a-t-il un ordre pour ajouter le buildpack + index.yml est-ce que tout doit se produire dans le cadre du même PR

Aucun problème du tout.

  1. Les binaires peuvent être hébergés où vous le souhaitez.
  2. Le index.yml est utilisé pour l'indirection vers ces binaires. Il doit donc y avoir un URI U , tel que U/index.yml existe et contienne un hachage YAML des versions pour télécharger les URI. Ainsi, par exemple, vous pouvez héberger https://raw.githubusercontent.com/elastic/apm-agent-java/master/index.yml avec des liens vers Maven Central et votre config/elastic_apm_agent.yml inclurait repository_root: https://raw.githubusercontent.com/elastic/apm-agent-java/master .

À des fins de test, j'ai fait cela "récursivement" avec le même référentiel de code hébergeant les fichiers jar pour obtenir le référentiel à construire, mais je reçois toujours des erreurs de version.

@bvader
https://github.com/kmacpher67/java-buildpack/tree/master/elastic-repo
Si vous copiez ce sous-répertoire dans un elastic comme Ben le suggère, vous pouvez alors y mettre vos binaires, je pourrais mettre à jour ce référentiel pour pointer vers ces fichiers bruts.

@nebhale, je reçois toujours d'horribles erreurs
``` [ConfigurationUtils] Configuration DEBUG à partir de /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/java_main.yml : {"java_main_class"=>nil, "arguments"=>nil}
[Buildpack] Charge utile de la version DEBUG :


modules complémentaires : []
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 -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 Configuration de la mémoire 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'
tâche : 'JAVA_OPTS="-agentpath:$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 Configuration de la mémoire 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'
Échec de la compilation de la version du droplet : la sortie de la version du pack de compilation n'est pas valide : yaml : erreurs de déblocage :
ligne 1 : impossible de désorganiser !!str Downloa... dans buildpackrunner.Release
État de sortie 224```

Ben devrais-je simplement soumettre à nouveau ce que j'ai, avez-vous besoin de moi pour résoudre ces erreurs de version diverses.
J'ai besoin de spec aussi. Je ne l'ai pas encore fait.
J'utilise maintenant la branche principale, je ne pouvais pas comprendre comment charger la branche via le manifeste.
Je viens donc de fusionner avec mon maître de repos.
https://github.com/kmacpher67/java-buildpack
Faites-moi savoir quoi faire.

C'est presque certainement parce que vous sortez quelque chose sur la console pendant la phase de publication. stdout est réservé pendant cette phase afin de communiquer la charge utile de configuration du processus.

Une fois que vous aurez simplifié le code pour utiliser tout notre comportement de téléchargement et faire correspondre les autres conceptions d'intégration APM, je pense que vous verrez ce problème disparaître.

@kmacpher67 @nebhale

@bvader
https://github.com/kmacpher67/java-buildpack/tree/master/elastic-repo
Si vous copiez ce sous-répertoire dans un elastic comme Ben le suggère, vous pouvez alors y mettre vos binaires, je pourrais mettre à jour ce référentiel pour pointer vers ces fichiers bruts.

Je travaille avec notre responsable technique pour l'agent Elastic Java APM. Nous travaillons sur les options de configuration/décisions. Je soupçonne que nous laisserons les binaires dans le référentiel maven car toutes nos autres documentations / dépendances en dépendent.

Vous pouvez voir cette discussion ici.
https://github.com/elastic/apm-agent-java/issues/523#issuecomment -472604463

@kmacpher67 Appréciez vos efforts sur ce point !

Je pense que nous voudrions mettre à jour les documents de l'agent Elastic APM, ils ne devraient peut-être pas être spécifiques à JRebel. Peut-être qu'il me manque quelque chose, mais ne devrait-il pas s'agir uniquement de documents génériques de buildpack pour Elastic APM ?

Je fais référence à :
https://github.com/kmacpher67/java-buildpack/blob/master/docs/framework-elastic_apm_agent.md

Il semble également qu'il existe peut-être un certain nombre de paramètres supplémentaires qui peuvent / devraient être pris en charge. peut-être qu'après avoir obtenu ce premier PR, l'équipe Elastic pourra jeter un coup d'œil et mettre à jour.

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

Exemple secret_token est une configuration très importante.
https://www.elastic.co/guide/en/apm/agent/java/current/config-reporter.html#config -secret-token

L'équipe Elastic est impatiente de contribuer.

@nebhale travaillant sur CLA, croyez que vous et moi nous sommes croisés, j'étais le VP Eng. chez CoreLogic où nous avons utilisé PCF / Labs, aidez à créer des laboratoires dans SaMo maintenant chez Elastic

@nebhale avez-vous l'intention de prendre en charge directement les référentiels maven ? https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/maven-metadata.xml devrait avoir toutes les informations requises disponibles, seul le format est un peu différent.

Par example

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

@bvader
J'ai mis à jour la documentation de l'agent.
Ajout du remplacement de service pour secret_token
ttps://github.com/kmacpher67/java-buildpack

Il y a un fichier de propriétés facultatif que nous ajoutons, en avez-vous un exemple que je peux + ajouter au référentiel :
Le pack de construction a un emplacement pour cela :
https://github.com/kmacpher67/java-buildpack/tree/master/resources

+1 vote pour la prise en charge de maven XML, je l'aurais écrit mais je ne suis pas un programmeur ruby ​​et je doute que les gens de cf le feront étant donné que d'autres agents ont la même situation. Ce serait idéal si vous pouvez ajouter index.yml, sinon, faites-le moi savoir, je vais consulter le projet susmentionné pour obtenir les personnes clés pour la mise en scène de ces éléments.

Je doute que les gens de cf soient donnés que d'autres agents ont la même situation

Je pense que c'est un argument en faveur de l'ajout du support maven - cela faciliterait non seulement la tâche d'Elastic APM, mais aussi d'autres 🙂

En attendant, j'ai ajouté le index.yml au repo github : https://github.com/elastic/apm-agent-java/pull/524

@kmacpher67

Le fichier index.yml se trouve désormais à l'adresse :
https://raw.githubusercontent.com/elastic/apm-agent-java/master/cloudfoundry/index.yml

1) Merci pour la mise à jour sur le secret_token

2) En ce qui concerne la documentation, je suis toujours assez confus au sujet de toutes les références JRebel et de la détection JRebel, etc. L'agent / buildpack Elastic APM ne doit pas avoir de dépendances / références tierces ni d'hyperliens vers JRebel. Nous pourrons bientôt fournir des instructions dans la documentation Elastic Java APM.

Je m'attendrais à ce que cette page ressemble davantage à la page New Relic. Ou peut-être que quelque chose me manque complètement et que cela est en quelque sorte étroitement associé à JRebel.

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

Je suis heureux d'entrer et de vous aider via votre fork ou dès que nous fusionnerons. Peut-être qu'il suffit de retirer toute la référence JRebel pour commencer.

Exemple

Cadre d'agent APM élastique

L'Elastic APM Agent Framework provoque la configuration automatique d'une application pour qu'elle fonctionne avec un service Elastic APM lié.

Critère de détection | Existence d'un seul service New Relic lié. L'existence d'un service New Relic est définie comme la charge utile VCAP_SERVICES contenant un service dont le nom, l'étiquette ou la balise a elastic-apm comme sous-chaîne.
-- | --
Balises | elastic-agent=<version>

3) Nous avons un fichier de propriétés non officiel mais toutes les propriétés ont des valeurs par défaut raisonnables, fusionnons sans cela, j'aurai besoin d'impliquer l'équipe d'ingénierie, etc. et nous pouvons l'ajouter plus tard, sauf si cela est absolument nécessaire au début.

@nebhale Existe-t-il un moyen de marquer cela comme « bêta ou expérimental » au début ? Ou est-ce qu'il entre simplement et que nous itérons, je ne comprends pas très bien le processus. Elastic voudra répéter cet excellent travail que @kmacpher67 a fourni comme base.

corriger le copier-coller de la documentation. supprimé jrebel zéro refs.

Je reçois toujours une sorte de journaux de console de Downloa... dans la charge utile de la version

   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

on dirait qu'il vient de l'emballage golang suivant.
https://github.com/cloudfoundry/buildpackapplifecycle/blob/master/buildpackrunner/runner.go#L484
Dois-je simplement demander la Pull Request à partir de mon référentiel principal ?
La dernière mise à jour fonctionne en pointant sur index.yml situé sur Elastic.

@nebhale Existe-t-il un moyen de marquer cela comme « bêta ou expérimental » au début ? Ou est-ce qu'il entre simplement et que nous itérons, je ne comprends pas très bien le processus. Elastic voudra répéter ce grand travail qui

J'ai écrit les tests de spécification pour cela, je doute sérieusement de la qualité des tests car je n'ai pas ruby ​​en cours d'exécution localement.
J'ai piraté et poussé les modifications du pack de construction dans un espace d'application cf.

Code d'essai :
https://github.com/kmacpher67/java-buildpack/blob/368dc9cc1a08670b49cdbf9d226eaae220ab4b77/spec/java_buildpack/framework/elastic_apm_agent_spec.rb#L80

Idéalement, une fois que ce déploiement fonctionne dans un espace d'application CF, je retourne à notre instance Elastic 6.4 et active les fonctionnalités apm. Voyez ce qui commence à diffuser là-bas.

Ohh. « Heureux d'avoir appris à putt !! » en fait, j'ai pu regarder un diff et j'ai réalisé qu'il y avait encore du débogage dans le downloadcache.rb que j'avais oublié de supprimer. 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  

Il ne plante pas maintenant ! Permettez-moi de mettre à jour la branche d'extraction cible.
Ensuite, je corrigerai mon installation locale cf ELK6.4 pour qu'APM soit installé.
Voir ce que/si quelque chose rapporte.

@nebhale Voulez-vous que j'écrase/squanchy les commits ? Il y a mes +600 itérations de piratage en tant que commits.

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

@bvader
il essaie d'atteindre le port8200 inexistant pour l'apm. Je dois le configurer maintenant.
Avez-vous un fichier readme rapide pour le paresseux sur un guide de configuration de démarrage rapide pour Elastic APM ?
```
2019-03-14T13:39:43.03-0400 [APP/PROC/WEB/0] OUT 2019-03-14 17:39:43.037 [apm-reporter] ERREUR co.elastic.apm.agent.report.IntakeV2ReportingEventHandler - Échec pour gérer l'événement de type METRICS avec cette erreur : la connexion a expiré
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 - Support éteint pendant 1 seconde (±10%)````

@kmacpher67

Vous pouvez l'utiliser si vous êtes à l'aise avec les dockers. Cela supportera un peu l'environnement Elastic, Kibana, Apm-Server

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

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

Voici un exemple d'application Java avec des instructions pour Java local... et tout ce qu'il faut tester.
https://gist.github.com/bvader/cc9fea7e6f8f709dfa2ad14776eed7fe

Si vous voulez juste le serveur apm, je téléchargerais / installerais et ferais une configuration minimale. Je voudrais juste télécharger le tar.gz et la configuration minimale.

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

Vous devriez juste avoir besoin de configurer la sortie vers votre instance Elasticsearch et l'hôte 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"

Puis cours

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

./apm-server -e

Suivez également les instructions, c'est ainsi que vous téléchargez / configurez les tableaux de bord côté Kibana / Elasticsearch etc.

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

@kmacpher67 Faites-moi savoir si vous voulez un peu d'aide/collaborer sur le serveur APM peut-être que nous pouvons sauter sur un zoom. Vous pouvez me contacter directement sur mon email...

Oh, excusez-moi si j'étais confus sur le "Beta ou Experimental" au début ? " commentaire Je viens d'apprendre le processus CF et la construction du processus de buildpack, I / Nous / Elastic / La communauté OSS apprécie totalement vos efforts et votre esprit communautaire.

La semaine prochaine, j'essaierai de retirer votre référentiel s'il n'est pas fusionné et d'essayer d'installer / d'exécuter de mon côté.

@nebhale

Je pense que nous sommes prêts à ce que vous jetiez un œil au PR lorsque vous serez prêt.

J'attends le PULL de la demande de fusion, mais il y a un conflit.
Révision demandée
Un examen a été demandé sur cette demande d'extraction. Il n'est pas nécessaire de fusionner.
@nebhale
nebhale a été demandé pour examen
Cette branche a des conflits qui doivent être résolus
Seuls ceux qui disposent d'un accès en écriture à ce référentiel peuvent fusionner les demandes d'extraction.
Fichiers en conflit

rakelib/versions_task.rb

Je pense que je dois sélectionner les modifications et les déplacer vers la dernière version, peut-être faire un nouveau FORK basé sur la dernière version.
J'ai demandé sur ce fil de discussion MR si je devais m'effondrer ou soumettre à nouveau.

Cela devrait être fermé par pull request
https://github.com/cloudfoundry/java-buildpack/pull/696

Cette page vous a été utile?
0 / 5 - 0 notes