Java-buildpack: dukungan untuk kerangka kerja elastic-apm-agent baru

Dibuat pada 6 Des 2018  ·  28Komentar  ·  Sumber: cloudfoundry/java-buildpack

Elastic memiliki modul APM baru untuk ELK yang memiliki agen instrumentasi java.
Berikut catatan mulai cepat:
https://www.elastic.co/blog/elastic-apm-java-agent-beta-released

Saya sudah mencoba membuat cabang dengan memulai di agen.
https://github.com/kmacpher67/Java-buildpack/tree/elastic-apm-agent

Apakah lebih mudah bagi saya untuk meretas ini bersama dan melakukan Pull Request agar Anda melakukan Merge?
atau bagi Anda hanya untuk melakukannya?
Beri tahu saya apa yang paling cocok untuk Anda.

Selamat datang kritik komentar pada basis kode saya yang ada.

framework

Semua 28 komentar

Terima kasih atas kesabaran Anda. Saya baru saja memeriksa ini tetapi ketika saya meninjau garpu Anda, tampaknya Anda tidak membuat perubahan apa pun di cabang Anda.

image

Namun secara umum, sepertinya integrasi benar-benar lurus ke depan. Saya lebih suka Anda mengirimkan PR untuk ini, dan mendasarkannya pada sesuatu seperti Agen Wawasan Aplikasi Azure akan memberi Anda awal yang baik.

Saya mendorong perubahan lokal git.
Ditambahkan:

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

Pada dasarnya mengikuti pola New Relic.
Terima kasih dan maaf karena gagal pada komit/Push dasar git. :(

Ini terlihat cukup dekat untuk diajukan sebagai PR formal untuk ditinjau. Ada beberapa perubahan yang perlu kami lakukan, tetapi tidak ada yang besar.

Apa yang harus saya lakukan agar ini bisa digabungkan?
Apakah saya perlu melakukan sesuatu?
Saya akan menguji ini menggunakan cabang khusus saya?

Saya menggabungkan cabang jarak jauh saya ke dalam master, memperbarui dokumen, dan beberapa item lain yang tampaknya diperlukan agar kode ElasticApmAgent dan konfigurasi yml berfungsi.
Sekarang saya mendapatkan kesalahan di bagian rilis.
Selanjutnya saya mengaktifkan debugging per dokumen ini:
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/debugging-the-buildpack.md
Sekarang saya mendapatkan jumlah logging yang gila.
Ini tidak terlihat seperti
AKHIR log terperinci: kesalahan utama sepertinya;
Gagal membuat rilis droplet: keluaran rilis buildpack tidak valid: yaml: baris 1: nilai pemetaan tidak diizinkan dalam konteks ini
Keluar dari status 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

Saya menambahkan pernyataan cetak debug ke kode sehingga saya bisa melihat apa yang terjadi:
CONFIG membuatnya di sana:
[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
mendukung? - ElasticApmAgent < JavaBuildpack::Component::VersionedDependencyComponent
muncul di log, tetapi pernyataan cetak debug untuk kompilasi dan rilis tidak.
Lihat kode di sini:
https://github.com/kmacpher67/java-buildpack/blob/master/lib/java_buildpack/framework/elastic_apm_agent.rb#L29

ahhh rilis langkah konfigurasi panggilan.
aha bagian 2: kunci peka huruf besar-kecil.

cf update-user-provided-service elasticapm -p 'server_urls,application_packages'
Saya sebelumnya telah memperbarui layanan menggunakan nama kunci ALL Upper Case, di mana nama variabel dalam kode .rb. :( tidak keren: SERVER_URLSSERVER_URLS, penanganan kesalahan buruk APPLICATION_PACKAGES dalam basis kode itu.
CATATAN UNTUK MASA DEPAN:

Oke, saya mendapatkan masalah ini sekarang:

[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

Ia mencoba menemukan file /maven2/co/elastic/apm/elastic-apm-agent/index.yml yang tidak ada.
Omong kosong repo maven tidak mendukung index.yml
http://central.maven.org/maven2/co/elastic/apm/elastic-apm-agent/
Apa langkah selanjutnya untuk mengatasi ini?

Setelah sejumlah besar peretasan (uris tidak valid, def buruk diperlukan mendeteksi blok, dll) dan revisi:
akhirnya pergi dengan download_jar(<strong i="6">@version</strong>, <strong i="7">@uri</strong>, <strong i="8">@jar_name</strong> )
saya mendapatkan kesalahan ini, kemungkinan karena peretasan ekstensif di mana saya seharusnya tidak melakukannya.

   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

Apakah itu persyaratan index.yml di repo pakar di bawah
https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent?

Apa praktik terbaik untuk lokasi index.yml ? Apakah ada lokasi umum lainnya (github dll)

Secara umum orang hanya meng-host binari di mana pun mereka inginkan. Jadi jika Anda melihat config/add_dynamics_agent.yml mereka hanya meng-host di suatu tempat di domain mereka sendiri.

Ini adalah opsi pilihan kami (mengizinkan proyek untuk mempertahankan repo dan memperbarui sesuai kebutuhan), tetapi jika itu terlalu membebani, kami memiliki proyek java-buildpack-dependency-builder tempat kami mereplikasi dependensi ke dalam cache yang dihosting oleh Cloud Foundry Dasar. Ada beberapa batasan untuk ini seputar lisensi dan ketersediaan unduhan, tetapi kami dapat menjelajahinya jika perlu.

Terima kasih....

Maaf padat / Jadi jelas:

a) Kami dapat meng-host binari di tempat yang kami inginkan, bagi kami maven repo

b) kita dapat meng-host index.yml yang menunjuk ke biner tersebut di

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

c) Dan kami akan membuka permintaan tarik untuk melakukan itu. kami akan menjadi Kontributor CF dengan menandatangani PKB

Benar?

Apakah ada perintah untuk menambahkan buildpack + index.yml apakah itu semua harus terjadi sebagai bagian dari PR yang sama?

Tidak ada masalah sama sekali.

  1. Binari dapat di-host di mana pun Anda inginkan.
  2. index.yml digunakan untuk tipuan ke biner tersebut. Jadi perlu ada beberapa URI U , sehingga U/index.yml ada dan berisi versi hash YAML untuk mengunduh URI. Jadi misalnya Anda dapat meng-host https://raw.githubusercontent.com/elastic/apm-agent-java/master/index.yml dengan tautan ke Maven Central dan config/elastic_apm_agent.yml akan menyertakan repository_root: https://raw.githubusercontent.com/elastic/apm-agent-java/master .

Untuk tujuan pengujian, saya telah melakukannya "secara rekursif" dengan kode repo yang sama yang menghosting file jar untuk membuat repo dibuat, tetapi saya masih mendapatkan kesalahan rilis.

@bvader
https://github.com/kmacpher67/Java-buildpack/tree/master/elastic-repo
Jika Anda menyalin sub-direktori ini ke repo elastic seperti yang disarankan Ben, maka Anda dapat meletakkan binari Anda di sana, saya dapat memperbarui repo ini untuk menunjuk ke file mentah tersebut.

@nebhale saya masih mendapatkan kesalahan misc yang mengerikan:
``` [ConfigurationUtils] Konfigurasi DEBUG dari /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/java_main.yml: {"java_main_class"=>nil, "arguments"=>nil}
[Buildpack] Muatan Rilis DEBUG:


tambahan: []
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 Konfigurasi Memori 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'
tugas: '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 Konfigurasi Memori 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'
Gagal membuat rilis droplet: keluaran rilis buildpack tidak valid: yaml: kesalahan unmarshal:
baris 1: tidak dapat menghapus !!str Downloa... ke dalam buildpackrunner.Release
Keluar dari status 224```

Ben, haruskah saya mengirimkan kembali apa yang saya miliki, Anda membutuhkan saya untuk menyelesaikan kesalahan rilis lain-lain ini.
Saya perlu spek juga. Saya belum melakukannya.
Saya menggunakan cabang master sekarang, saya tidak tahu bagaimana cara memuat cabang melalui manifes.
Jadi saya baru saja bergabung kembali ke master repo saya.
https://github.com/kmacpher67/Java-buildpack
Beri tahu saya apa yang harus dilakukan.

Ini hampir pasti karena Anda mengeluarkan sesuatu ke konsol selama fase rilis. stdout dicadangkan selama fase itu untuk mengomunikasikan muatan konfigurasi proses.

Setelah Anda menyederhanakan kode untuk memanfaatkan semua perilaku pengunduhan kami dan mencocokkan desain integrasi APM lainnya, saya pikir Anda akan menemukan masalah ini hilang.

@kmacpher67 @nebhale

@bvader
https://github.com/kmacpher67/Java-buildpack/tree/master/elastic-repo
Jika Anda menyalin sub-direktori ini ke repo elastic seperti yang disarankan Ben, maka Anda dapat meletakkan binari Anda di sana, saya dapat memperbarui repo ini untuk menunjuk ke file mentah tersebut.

Saya bekerja dengan pimpinan teknologi kami untuk agen APM Elastic Java. Kami sedang mengerjakan opsi / keputusan konfigurasi. Saya menduga kami akan meninggalkan binari di repo pakar karena semua dokumentasi/dependensi kami yang lain bergantung padanya.

Anda dapat melihat diskusi ini di sini.
https://github.com/elastic/apm-agent-java/issues/523#issuecomment -472604463

@kmacpher67 Hargai usaha Anda dalam hal ini!

Saya pikir kami ingin memperbarui dokumen untuk agen APM Elastis, mungkin mereka tidak harus spesifik JRebel. Mungkin saya melewatkan sesuatu tetapi bukankah ini hanya dokumen buildpack generik untuk Elastic APM?

Saya mengacu pada:
https://github.com/kmacpher67/java-buildpack/blob/master/docs/framework-elastic_apm_agent.md

Juga sepertinya mungkin ada sejumlah parameter tambahan yang dapat/harus didukung. mungkin setelah kami mendapatkan PR awal ini di tim Elastis dapat melihat dan memperbarui.

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

Contoh secret_token adalah konfigurasi yang sangat penting.
https://www.elastic.co/guide/en/apm/agent/java/current/config-reporter.html#config -secret-token

Tim Elastis menantikan untuk berkontribusi.

@nebhale mengerjakan CLA, percaya Anda dan saya telah melewati jalan, saya adalah VP Eng. di CoreLogic tempat kami menggunakan PCF / Labs, bantu bangun lab di SaMo sekarang di Elastic

@nebhale apakah Anda memiliki rencana untuk mendukung repositori pakar secara langsung? https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/maven-metadata.xml seharusnya memiliki semua informasi yang diperlukan, hanya formatnya yang sedikit berbeda.

Sebagai contoh

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

@bvader
Saya telah memperbarui dokumentasi untuk agen.
Menambahkan penggantian layanan untuk secret_token
ttps://github.com/kmacpher67/java-buildpack

Ada file properti opsional yang kami tambahkan, apakah Anda memiliki contoh yang dapat saya tambahkan + ke repo:
Paket build memiliki lokasi untuk itu:
https://github.com/kmacpher67/Java-buildpack/tree/master/resources

+1 suara untuk dukungan maven XML, saya akan menulisnya tetapi saya bukan programmer Ruby dan saya ragu orang-orang cf akan memberi agen lain memiliki situasi yang sama. Akan sangat ideal jika Anda dapat menambahkan index.yml jika tidak, beri tahu saya, saya akan memeriksa proyek yang disebutkan di atas untuk mendapatkan orang-orang penting untuk pementasan item tersebut.

Saya ragu orang-orang cf akan memberi agen lain memiliki situasi yang sama

Saya pikir ini adalah argumen untuk menambahkan dukungan maven - yang akan membuatnya tidak hanya lebih mudah untuk APM Elastis, tetapi juga untuk orang lain

Sementara itu, saya telah menambahkan index.yml ke repo github: https://github.com/elastic/apm-agent-Java/pull/524

@kmacpher67

Index.yml sekarang dapat ditemukan di:
https://raw.githubusercontent.com/elastic/apm-agent-java/master/cloudfoundry/index.yml

1) Terima kasih atas pembaruan pada secret_token

2) Sehubungan dengan dokumentasi, saya masih cukup bingung tentang semua referensi JRebel dan deteksi JRebel dll. Agen / buildpack APM Elastis tidak boleh memiliki dependensi / referensi pihak ke-3 dan hyperlink kembali ke JRebel. Kami dapat segera memberikan instruksi di dokumen Elastic Java APM.

Saya berharap halaman ini terlihat lebih seperti Halaman Relik Baru. Atau mungkin saya benar-benar kehilangan sesuatu dan ini entah bagaimana erat digabungkan dengan JRebel.

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

Saya senang untuk masuk dan membantu melalui garpu Anda atau segera setelah kami bergabung. Mungkin ambil saja semua Referensi JRebel untuk memulai.

contoh

Kerangka Agen APM Elastis

Kerangka Agen APM elastis menyebabkan aplikasi dikonfigurasikan secara otomatis untuk bekerja dengan Layanan APM elastis terikat.

Kriteria Deteksi | Keberadaan layanan New Relic terikat tunggal. Keberadaan layanan New Relic didefinisikan sebagai payload VCAP_SERVICES berisi layanan yang nama, label, atau tagnya memiliki elastic-apm sebagai substring.
-- | --
Tag | elastic-agent=<version>

3) Kami memiliki file properti tidak resmi tetapi semua properti memiliki default yang masuk akal, mari gabungkan tanpa itu saya perlu melibatkan tim teknik dll. dan kami dapat menambahkannya nanti kecuali jika itu benar-benar diperlukan pada awalnya.

@nebhale Apakah ada cara untuk menandai ini sebagai "Beta atau Eksperimental" pada awalnya? Atau hanya masuk dan kami ulangi, saya agak tidak jelas tentang prosesnya. Elastic ingin mengulangi karya hebat ini yang telah disediakan oleh @kmacpher67 sebagai fondasi.

perbaiki dokumentasi copy & paste. dihapus jrebel nol referensi.

Saya masih mendapatkan semacam log konsol Downloa... dalam muatan rilis

   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

sepertinya berasal dari bungkus golang berikut ini.
https://github.com/cloudfoundry/buildpackapplifecycle/blob/master/buildpackrunner/runner.go#L484
Haruskah saya meminta Pull Request dari master repo saya?
Pembaruan terbaru berfungsi dengan menunjuk ke index.yml yang terletak di Elastic.

@nebhale Apakah ada cara untuk menandai ini sebagai "Beta atau Eksperimental" pada awalnya? Atau hanya masuk dan kami ulangi, saya agak tidak jelas tentang prosesnya. Elastis ingin mengulangi pekerjaan hebat ini yang

Saya menulis tes spesifikasi untuk ini, saya sangat meragukan kualitas tes karena saya tidak menjalankan Ruby secara lokal.
saya telah meretas dan mendorong perubahan paket build ke ruang aplikasi cf.

Kode tes:
https://github.com/kmacpher67/java-buildpack/blob/368dc9cc1a08670b49cdbf9d226eaae220ab4b77/spec/Java_buildpack/framework/elastic_apm_agent_spec.rb#L80

Idealnya setelah saya mendapatkan penerapan yang berfungsi ini ke ruang aplikasi CF, saya kembali ke instance Elastic 6.4 kami dan mengaktifkan fitur apm. Lihat apa yang mulai mengalir di sana.

ohh. `Selamat belajar putt!!" sebenarnya saya bisa melihat diff dan menyadari masih ada debugging di downloadcache.rb yang saya lupa hapus. 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  

Itu tidak crash sekarang! Biarkan saya memperbarui cabang tarikan target.
Kemudian saya akan memperbaiki instalasi cf ELK6.4 lokal saya untuk menginstal APM.
Lihat apa/jika ada yang melaporkan kembali.

@nebhale Apakah Anda ingin saya menekan/memasak komit? Ada iterasi peretasan +600 saya di sana sebagai komit.

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

@bvader
itu mencoba untuk menekan port8200 yang tidak ada untuk apm. Saya perlu mengaturnya sekarang.
Apakah Anda memiliki readme cepat untuk orang malas pada panduan penyiapan mulai cepat untuk apm elastis?
```
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 - Gagal untuk menangani acara tipe METRIKS dengan kesalahan ini: waktu koneksi habis
14-03-2019T13:39:43.03-0400 [APP/PROC/WEB/0] KELUAR 14-03-2019 17:39:43.038 [apm-reporter] INFO co.elastic.apm.agent.report.IntakeV2ReportingEventHandler - Dukungan mati selama 1 detik (±10%)````

@kmacpher67

Anda dapat menggunakan ini jika Anda merasa nyaman dengan buruh pelabuhan. Ini akan berdiri sedikit Elastis, Kibana, lingkungan Server-Apm

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

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

Berikut adalah contoh aplikasi Java dengan instruksi untuk Java lokal... dan semuanya untuk diuji.
https://Gist.github.com/bvader/cc9fea7e6f8f709dfa2ad14776eed7fe

Jika Anda hanya menginginkan server apm maka saya hanya akan mengunduh / menginstal dan melakukan konfigurasi minimum. Saya hanya akan mengunduh tar.gz dan konfigurasi minimum.

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

Anda hanya perlu mengonfigurasi output ke instance elasticsearch dan host server 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"

Lalu lari

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

./apm-server -e

Ikuti juga petunjuknya, ini adalah cara Anda mengunggah/mengonfigurasi dasbor samping Kibana/Elasticsearch dll.

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

@kmacpher67 Beri tahu saya jika Anda ingin sedikit bantuan / berkolaborasi di server APM mungkin kita bisa memperbesarnya. Bisa hubungi saya langsung di email saya...

Oh sebuah permintaan maaf jika saya membingungkan pada "Beta atau Eksperimental" pada awalnya? " komentar Saya baru belajar proses CF dan membangun proses buildpack, Saya / Kami / Elastis / Komunitas OSS sangat menghargai upaya dan semangat komunitas Anda.

Minggu depan saya akan mencoba untuk menarik repo Anda jika tidak digabung dan mencoba menginstal/menjalankan di ujung saya.

@nebhale

Saya pikir kami siap bagi Anda untuk melihat PR ketika Anda siap.

Saya sedang menunggu Gabung Permintaan PULL, tapi ada konflik.
Tinjauan diminta
Peninjauan telah diminta atas permintaan tarik ini. Hal ini tidak diperlukan untuk menggabungkan.
@nebhale
nebhale diminta untuk ditinjau
Cabang ini memiliki konflik yang harus diselesaikan
Hanya mereka yang memiliki akses tulis ke repositori ini yang dapat menggabungkan permintaan tarik.
File yang bentrok

rakelib/versions_task.rb

Saya pikir saya perlu memilih perubahan, dan memindahkannya ke yang terbaru, mungkin melakukan FORK baru berdasarkan versi terbaru.
Saya telah bertanya di utas MR ini, apakah saya harus menutup atau mengirim ulang.

Ini harus ditutup per permintaan tarik
https://github.com/cloudfoundry/Java-buildpack/pull/696

Apakah halaman ini membantu?
0 / 5 - 0 peringkat