Java-buildpack: ์ƒˆ๋กœ์šด elastic-apm-agent ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์›

์— ๋งŒ๋“  2018๋…„ 12์›” 06์ผ  ยท  28์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: cloudfoundry/java-buildpack

Elastic์—๋Š” Java ๊ณ„์ธก ์—์ด์ „ํŠธ๊ฐ€ ์žˆ๋Š” ELK์šฉ ์ƒˆ APM ๋ชจ๋“ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋น ๋ฅธ ์‹œ์ž‘ ์ฐธ๊ณ  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://www.elastic.co/blog/elastic-apm-java-agent-beta-released

์—์ด์ „ํŠธ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ง€์ ์„ ๋งŒ๋“ค๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/kmacpher67/java-buildpack/tree/elastic-apm-agent

๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ํ•จ๊ป˜ ํ•ดํ‚นํ•˜๊ณ  ๋ณ‘ํ•ฉ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๊นŒ?
์•„๋‹ˆ๋ฉด ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ํ•˜๊ธฐ ์œ„ํ•ด?
๊ท€ํ•˜์—๊ฒŒ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

๋‚ด ๊ธฐ์กด ์ฝ”๋“œ ๊ธฐ๋ฐ˜์— ๋Œ€ํ•œ ๋ชจ๋“  ์˜๊ฒฌ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

framework

๋ชจ๋“  28 ๋Œ“๊ธ€

๊ธฐ๋‹ค๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ์ด ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์•˜์ง€๋งŒ ๊ท€ํ•˜์˜ ๋ถ„๊ธฐ๋ฅผ ๊ฒ€ํ† ํ•  ๋•Œ ๋ถ„๊ธฐ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

image

๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ตํ•ฉ์ด ์ •๋ง ๊ฐ„๋‹จํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ PR์„ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ Azure Application Insights Agent ์™€ ๊ฐ™์€ ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ถœ๋ฐœ์ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

git ๋กœ์ปฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.
์ถ”๊ฐ€๋จ:

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

๊ธฐ๋ณธ์ ์œผ๋กœ New Relic์˜ ํŒจํ„ด์„ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์ธ git commit/push์— ์‹คํŒจํ•ด์„œ ๊ฐ์‚ฌํ•˜๊ณ  ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. :(

์ด๊ฒƒ์€ ๊ฒ€ํ† ๋ฅผ ์œ„ํ•ด ๊ณต์‹ PR๋กœ ์ œ์ถœํ•˜๊ธฐ์— ์ถฉ๋ถ„ํžˆ ์œ ์‚ฌํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ์žˆ์ง€๋งŒ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์ด ์žˆ๋‚˜์š”?
๋‚ด ์‚ฌ์šฉ์ž ์ง€์ • ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ?

๋‚ด ์›๊ฒฉ ๋ถ„๊ธฐ๋ฅผ ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉํ•˜๊ณ  ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์œผ๋ฉฐ ์ƒˆ ElasticApmAgent ์ฝ”๋“œ์™€ yml ๊ตฌ์„ฑ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ๊ธฐํƒ€ ํ•ญ๋ชฉ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์ œ ๋ฆด๋ฆฌ์Šค ์„น์…˜์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๋˜ํ•œ ์ด ๋ฌธ์„œ์— ๋”ฐ๋ผ ๋””๋ฒ„๊น…์„ ์ผฐ์Šต๋‹ˆ๋‹ค.
https://github.com/cloudfoundry/java-buildpack/blob/master/docs/debugging-the-buildpack.md
์ด์ œ ๋‚˜๋Š” ์—„์ฒญ๋‚œ ์–‘์˜ ๋กœ๊น…์„ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค
END OF ์„ธ๋ถ€ ๋กœ๊ทธ: ์ฃผ์š” ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์•ก์  ๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ ์‹คํŒจ: ๋นŒ๋“œํŒฉ ๋ฆด๋ฆฌ์Šค ์ถœ๋ ฅ ์œ ํšจํ•˜์ง€ ์•Š์Œ: yaml: ๋ผ์ธ 1: ์ด ์ปจํ…์ŠคํŠธ์—์„œ ๋งคํ•‘ ๊ฐ’์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ข…๋ฃŒ ์ƒํƒœ 224

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

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋””๋ฒ„๊น… ์ธ์‡„ ๋ฌธ์„ ์ฝ”๋“œ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
CONFIG๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
[Droplet] DEBUG Sandbox root: /tmp/app/.java-buildpack/dynatrace_one_agent [Buildpack] DEBUG Instantiating JavaBuildpack::Framework::ElasticApmAgent [Buildpack] DEBUG Successfully required JavaBuildpack::Framework::ElasticApmAgent [ConfigurationUtils] DEBUG Configuration from /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/elastic_apm_agent.yml: {"version"=>"1.1.0", "repository_root"=>"https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/", "repository_download"=>"https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/1.1.0/elastic-apm-agent-1.1.0.jar"} [Droplet] DEBUG Droplet root: /tmp/app [Droplet] DEBUG Buildpack root: /tmp/app/.java-buildpack [Droplet] DEBUG Sandbox root: /tmp/app/.java-buildpack/elastic_apm_agent [Buildpack] DEBUG Instantiating JavaBuildpack::Framework::GoogleStackdriverDebugger
์ง€์›? - ElasticApmAgent < JavaBuildpack::Component::VersionedDependencyComponent
๋กœ๊ทธ์— ํ‘œ์‹œ๋˜์ง€๋งŒ ์ปดํŒŒ์ผ ๋ฐ ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ๋””๋ฒ„๊ทธ ์ธ์‡„ ๋ฌธ์€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
https://github.com/kmacpher67/java-buildpack/blob/master/lib/java_buildpack/framework/elastic_apm_agent.rb#L29

ahhh ๋ฆด๋ฆฌ์Šค ๋‹จ๊ณ„๋Š” ๊ตฌ์„ฑ์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
์•„ํ•˜ ํŒŒํŠธ 2: ํ‚ค๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

cf ์—…๋ฐ์ดํŠธ ์‚ฌ์šฉ์ž ์ œ๊ณต ์„œ๋น„์Šค elasticapm -p '์„œ๋ฒ„ URL, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํŒจํ‚ค์ง€'
์ด์ „์— .rb ์ฝ”๋“œ์˜ ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์žˆ๋Š” ๋ชจ๋“  ๋Œ€๋ฌธ์ž ํ‚ค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. :( ๋ฉ‹์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค: SERVER_URLSSERVER_URLS,APPLICATION_PACKAGES' ํ•ด๋‹น ์ฝ”๋“œ ๊ธฐ๋ฐ˜์—์„œ ์ž˜๋ชป๋œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ.
๋ฏธ๋ž˜์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ:

์ด์ œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

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

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

์กด์žฌํ•˜์ง€ ์•Š๋Š” /maven2/co/elastic/apm/elastic-apm-agent/index.yml ํŒŒ์ผ์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
maven repo๋Š” index.yml์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
http://central.maven.org/maven2/co/elastic/apm/elastic-apm-agent/
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ด‘๋ฒ”์œ„ํ•œ ํ•ดํ‚น(์œ ํšจํ•˜์ง€ ์•Š์€ uris, ์ž˜๋ชป๋œ ์ •์˜๊ฐ€ ํ•„์š”ํ•œ ๋ธ”๋ก ๊ฐ์ง€ ๋“ฑ) ๋ฐ ์ˆ˜์ • ํ›„:
๊ฒฐ๊ตญ download_jar(<strong i="6">@version</strong>, <strong i="7">@uri</strong>, <strong i="8">@jar_name</strong> ) ์™€ ํ•จ๊ป˜
๋‚ด๊ฐ€ ํ•˜์ง€ ๋ง์•˜์–ด์•ผ ํ•˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ํ•ดํ‚น์œผ๋กœ ์ธํ•ด ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

@nebhale

maven repo์˜ index.yml์ด ์•„๋ž˜์˜ ์š”๊ตฌ ์‚ฌํ•ญ์ž…๋‹ˆ๊นŒ?
https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent?

index.yml ์œ„์น˜์— ๋Œ€ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ๊ณตํ†ต ์œ„์น˜(github ๋“ฑ)๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์€ ์›ํ•˜๋Š” ๊ณณ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ config/add_dynamics_agent.yml ๋ฅผ ๋ณด๋ฉด ํ˜ธ์ŠคํŠธ๋Š” ์ž์ฒด ๋„๋ฉ”์ธ์˜ ์–ด๋”˜๊ฐ€์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค(ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ํ—ˆ์šฉ). ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋ถ€๋‹ด์ด ๋˜๋Š” ๊ฒฝ์šฐ Cloud Foundry์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ์บ์‹œ์— ์ข…์†์„ฑ์„ ๋ณต์ œํ•˜๋Š” java-buildpack-dependency-builder ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ฐ˜. ๋ผ์ด์„ ์Šค ๋ฐ ๋‹ค์šด๋กœ๋“œ ๊ฐ€์šฉ์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ด์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”....

์กฐ๋ฐ€ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค / ๊ทธ๋ž˜์„œ ๋ช…ํ™•ํ•˜๊ฒŒ :

a) ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ณณ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. for us maven repo

b) ํ•ด๋‹น ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” index.yml์„ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

c) ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์—ด ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” CLA์— ์„œ๋ช…ํ•จ์œผ๋กœ์จ CF ๊ธฐ์—ฌ์ž๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ณ์€?

buildpack + index.yml์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ชจ๋‘ ๋™์ผํ•œ PR์˜ ์ผ๋ถ€๋กœ ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  1. ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ์›ํ•˜๋Š” ๊ณณ ์–ด๋””์—์„œ๋‚˜ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. index.yml ๋Š” ํ•ด๋‹น ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐ„์ ‘ ์ฐธ์กฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ U/index.yml ๊ฐ€ ์กด์žฌํ•˜๊ณ  URI๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋ฒ„์ „์˜ YAML ํ•ด์‹œ๊ฐ€ ํฌํ•จ๋˜๋„๋ก ์ผ๋ถ€ URI U ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Maven Central์— ๋Œ€ํ•œ ๋งํฌ๋กœ https://raw.githubusercontent.com/elastic/apm-agent-java/master/index.yml ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ๊ณ  config/elastic_apm_agent.yml ์—๋Š” repository_root: https://raw.githubusercontent.com/elastic/apm-agent-java/master ๋ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด jar ํŒŒ์ผ์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋™์ผํ•œ ์ฝ”๋“œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ "์žฌ๊ท€์ ์œผ๋กœ" ์ˆ˜ํ–‰ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฆด๋ฆฌ์Šค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@bvader
https://github.com/kmacpher67/java-buildpack/tree/master/elastic-repo
Ben์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ ์ด ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ elastic ์ €์žฅ์†Œ์— ๋ณต์‚ฌํ•˜๋ฉด ๊ฑฐ๊ธฐ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์›์‹œ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@nebhale ์—ฌ์ „ํžˆ ๋”์ฐํ•œ ๊ธฐํƒ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
``` [ConfigurationUtils] /tmp/buildpackdownloads/a457f9495309d44a788ea9f361d85ebf/config/java_main.yml์˜ ๋””๋ฒ„๊ทธ ๊ตฌ์„ฑ: {"java_main_class"=>nil, "arguments"=>nil}
[๋นŒ๋“œํŒฉ] ๋””๋ฒ„๊ทธ ๋ฆด๋ฆฌ์Šค ํŽ˜์ด๋กœ๋“œ:


์• ๋“œ์˜จ: []
config_vars: {}
default_process_types:
์›น: '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=๋ฉ”ํƒ€์ŠคํŽ˜์ด์Šค -stackThreads=250
-vmOptions="$JAVA_OPTS") && ์—์ฝ” JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ: $CALCULATED_MEMORY
&& JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT
ํ‰๊ฐ€ ์‹คํ–‰ $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher'
์ž‘์—…: '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=๋ฉ”ํƒ€์ŠคํŽ˜์ด์Šค -stackThreads=250
-vmOptions="$JAVA_OPTS") && ์—์ฝ” JVM ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ: $CALCULATED_MEMORY
&& JAVA_OPTS="$JAVA_OPTS $CALCULATED_MEMORY" && MALLOC_ARENA_MAX=2 SERVER_PORT=$PORT
ํ‰๊ฐ€ ์‹คํ–‰ $PWD/.java-buildpack/open_jdk_jre/bin/java $JAVA_OPTS -cp $PWD/. org.springframework.boot.loader.JarLauncher'
์•ก์  ๋ฆด๋ฆฌ์Šค ๋นŒ๋“œ ์‹คํŒจ: ๋นŒ๋“œํŒฉ์˜ ๋ฆด๋ฆฌ์Šค ์ถœ๋ ฅ์ด ์ž˜๋ชป๋จ: yaml: ๋น„์ •๋ ฌ ์˜ค๋ฅ˜:
1ํ–‰: !!str Downloa... ์„ buildpackrunner.Release๋กœ ๋น„์ •๋ ฌํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ข…๋ฃŒ ์ƒํƒœ 224```

Ben์€ ์ œ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ด๋Ÿฌํ•œ ๊ธฐํƒ€ ๋ฆด๋ฆฌ์Šค ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?
๋‚˜๋„ ์‚ฌ์–‘ํ•ด์•ผ์ง€. ๋‚˜๋Š” ์•„์ง ํ•˜์ง€ ์•Š์•˜๋‹ค.
์ง€๊ธˆ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋ธŒ๋žœ์น˜๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ repos ๋งˆ์Šคํ„ฐ์— ๋‹ค์‹œ ๋ณ‘ํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค.
https://github.com/kmacpher67/java-buildpack
๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

์ด๊ฒƒ์€ ๋ฆด๋ฆฌ์Šค ๋‹จ๊ณ„์—์„œ ์ฝ˜์†”์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค. stdout ๋Š” ํ”„๋กœ์„ธ์Šค ๊ตฌ์„ฑ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ๋‹จ๊ณ„์—์„œ ์˜ˆ์•ฝ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๋ชจ๋“  ๋‹ค์šด๋กœ๋“œ ๋™์ž‘์„ ํ™œ์šฉํ•˜๊ณ  ๋‹ค๋ฅธ APM ํ†ตํ•ฉ ๋””์ž์ธ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@kmacpher67 @nebhale

@bvader
https://github.com/kmacpher67/java-buildpack/tree/master/elastic-repo
Ben์ด ์ œ์•ˆํ•œ ๋Œ€๋กœ ์ด ํ•˜์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ elastic ์ €์žฅ์†Œ์— ๋ณต์‚ฌํ•˜๋ฉด ๊ฑฐ๊ธฐ์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์›์‹œ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” Elastic Java APM ์—์ด์ „ํŠธ์˜ ๊ธฐ์ˆ  ์ฑ…์ž„์ž์™€ ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ตฌ์„ฑ ์˜ต์…˜/๊ฒฐ์ •์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฌธ์„œ/์ข…์†์„ฑ์ด ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— maven repo์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‚จ๊ฒจ ๋‘˜ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์ด ํ† ๋ก ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/elastic/apm-agent-java/issues/523#issuecomment -472604463

@kmacpher67 ์—ฌ๋Ÿฌ๋ถ„์˜ ๋…ธ๊ณ ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

Elastic APM ์—์ด์ „ํŠธ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ JRebel๊ณผ ๊ด€๋ จ๋˜์–ด์„œ๋Š” ์•ˆ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ๋†“์น˜๊ณ  ์žˆ์„์ง€๋„ ๋ชจ๋ฅด์ง€๋งŒ ์ด๊ฒƒ์ด Elastic APM์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ๋นŒ๋“œํŒฉ ๋ฌธ์„œ๊ฐ€ ์•„๋‹ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋‹ค์Œ์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ๋‹ค:
https://github.com/kmacpher67/java-buildpack/blob/master/docs/framework-elastic_apm_agent.md

๋˜ํ•œ ์ง€์›๋  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ์ง€์›๋˜์–ด์•ผ ํ•˜๋Š” ์ถ”๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋งŽ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Elastic ํŒ€์—์„œ ์ด ์ดˆ๊ธฐ PR์„ ๋ฐ›์€ ํ›„ ์‚ดํŽด๋ณด๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜ˆ secret_token ๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ์ž…๋‹ˆ๋‹ค.
https://www.elastic.co/guide/en/apm/agent/java/current/config-reporter.html#config -secret-token

Elastic ํŒ€์ด ๊ธฐ์—ฌํ•˜๊ธฐ๋ฅผ ๊ณ ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@nebhale ์€ CLA์—์„œ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ๊ณผ ์ €๋Š” ๊ธธ์„ ๊ฑด๋„ˆ์™”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” VP Eng์˜€์Šต๋‹ˆ๋‹ค. PCF/Labs๋ฅผ ์‚ฌ์šฉํ•œ CoreLogic์—์„œ ์ง€๊ธˆ Elastic์—์„œ SaMo์— ์‹คํ—˜์‹ค ๊ตฌ์ถ•์„ ๋•์Šต๋‹ˆ๋‹ค.

@nebhale maven ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ง์ ‘ ์ง€์›ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/maven-metadata.xml์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ํ˜•์‹๋งŒ ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด

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

@bvader
์—์ด์ „ํŠธ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
secret_token ๋Œ€ํ•œ ์„œ๋น„์Šค ์žฌ์ •์˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
ttps://github.com/kmacpher67/java-buildpack

์šฐ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€ํ•˜๋Š” ์„ ํƒ์  ์†์„ฑ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— +์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒ˜ํ”Œ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋นŒ๋“œ ํŒฉ์—๋Š” ๋‹ค์Œ ์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/kmacpher67/java-buildpack/tree/master/resources

maven XML ์ง€์›์— ๋Œ€ํ•ด +1 ํˆฌํ‘œ๋ฅผ ํ–ˆ๋‹ค๋ฉด ์ž‘์„ฑํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” ๋ฃจ๋น„ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•„๋‹ˆ๋ฉฐ cf ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ์—์ด์ „ํŠธ๊ฐ€ ๊ฐ™์€ ์ƒํ™ฉ์„ ๊ฒช๋Š”๋‹ค๋ฉด ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. index.yml์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์ด์ƒ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์„ธ์š”. ํ•ด๋‹น ํ•ญ๋ชฉ์„ ์ค€๋น„ํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ์‚ฌ๋žŒ๋“ค์„ ํ™•๋ณดํ•˜๊ธฐ ์œ„ํ•ด ์•ž์„œ ์–ธ๊ธ‰ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

cf ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ์—์ด์ „ํŠธ๊ฐ€ ๊ฐ™์€ ์ƒํ™ฉ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด maven ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋…ผ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Elastic APM๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„ ๋” ์‰ฌ์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ™‚

๊ทธ๋™์•ˆ github repo์— index.yml ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/elastic/apm-agent-java/pull/524

@kmacpher67

index.yml์€ ์ด์ œ ๋‹ค์Œ ์œ„์น˜์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://raw.githubusercontent.com/elastic/apm-agent-java/master/cloudfoundry/index.yml

1) secret_token ์—…๋ฐ์ดํŠธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

2) ๋ฌธ์„œ์™€ ๊ด€๋ จํ•˜์—ฌ ์ €๋Š” ์—ฌ์ „ํžˆ ๋ชจ๋“  JRebel ์ฐธ์กฐ ๋ฐ JRebel ๊ฐ์ง€ ๋“ฑ์— ๋Œ€ํ•ด ๊ฝค ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. Elastic APM ์—์ด์ „ํŠธ/๋นŒ๋“œํŒฉ์—๋Š” ํƒ€์‚ฌ ์ข…์†์„ฑ/์ฐธ์กฐ ๋ฐ JRebel์— ๋Œ€ํ•œ ํ•˜์ดํผ๋งํฌ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Elastic Java APM ๋ฌธ์„œ์—์„œ ๊ณง ์ง€์นจ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ New Relic Page์™€ ๋น„์Šทํ•  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ๋ญ”๊ฐ€๋ฅผ ์™„์ „ํžˆ ๋†“์น˜๊ณ  ์žˆ๊ณ  ์ด๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ๋“  JRebel๊ณผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

๊ท€ํ•˜์˜ ๋ถ„๊ธฐ์ ์„ ํ†ตํ•ด ๋˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•ฉ๋ณ‘๋˜๋Š” ์ฆ‰์‹œ ์ฐธ์—ฌํ•˜์—ฌ ๋„์›€์„ ๋“œ๋ฆฌ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ชจ๋“  JRebel Reference๋ฅผ ๊บผ๋‚ด ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ์‹œ

Elastic APM ์—์ด์ „ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ

Elastic APM ์—์ด์ „ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์ธํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ”์ธ๋”ฉ๋œ Elastic APM ์„œ๋น„์Šค์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์ž๋™์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํƒ์ง€ ๊ธฐ์ค€ | ๋‹จ์ผ ๋ฐ”์ธ๋”ฉ๋œ New Relic ์„œ๋น„์Šค์˜ ์กด์žฌ. New Relic ์„œ๋น„์Šค์˜ ์กด์žฌ๋Š” ์ด๋ฆ„, ๋ ˆ์ด๋ธ” ๋˜๋Š” ํƒœ๊ทธ์˜ ํ•˜์œ„ ๋ฌธ์ž์—ด๋กœ elastic-apm ๊ฐ€ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•˜๋Š” VCAP_SERVICES ํŽ˜์ด๋กœ๋“œ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.
-- | --
ํƒœ๊ทธ | elastic-agent=<version>

3) ๋น„๊ณต์‹ ์†์„ฑ ํŒŒ์ผ์ด ์žˆ์ง€๋งŒ ๋ชจ๋“  ์†์„ฑ์—๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—”์ง€๋‹ˆ์–ด๋ง ํŒ€ ๋“ฑ์„ ์ฐธ์—ฌ์‹œ์ผœ์•ผ ํ•˜๋ฉฐ ์ฒ˜์Œ์— ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@nebhale ์ฒ˜์Œ์— ์ด๊ฒƒ์„ "๋ฒ ํƒ€ ๋˜๋Š” ์‹คํ—˜"์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ๋“ค์–ด๊ฐ€๊ณ  ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ ๊ณผ์ •์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. Elastic์€ @kmacpher67 ์ด ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ๊ณตํ•œ ์ด ํ›Œ๋ฅญํ•œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌธ์„œ ๋ณต์‚ฌ ๋ฐ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฑฐ๋œ jrebel zero refs.

๋ฆด๋ฆฌ์Šค ํŽ˜์ด๋กœ๋“œ์—์„œ Downloa... ์˜ ์ฝ˜์†” ๋กœ๊ทธ๋ฅผ ๊ณ„์† ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ golang ๋ž˜ํผ์—์„œ ์˜ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://github.com/cloudfoundry/buildpackapplifecycle/blob/master/buildpackrunner/runner.go#L484
๋งˆ์Šคํ„ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
์ตœ์‹  ์—…๋ฐ์ดํŠธ๋Š” Elastic์— ์žˆ๋Š” index.yml์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@nebhale ์ฒ˜์Œ์— ์ด๊ฒƒ์„ "๋ฒ ํƒ€ ๋˜๋Š” ์‹คํ—˜"์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ๋“ค์–ด๊ฐ€๊ณ  ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ ๊ณผ์ •์— ๋Œ€ํ•ด ์•ฝ๊ฐ„ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. Elastic์€ ์ด ํ›Œ๋ฅญํ•œ ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์œ„ํ•ด ์‚ฌ์–‘ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ฃจ๋น„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ์˜ ํ’ˆ์งˆ์ด ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋นŒ๋“œ ํŒฉ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ cf ์•ฑ ๊ณต๊ฐ„์œผ๋กœ ํ•ดํ‚นํ•˜๊ณ  ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ:
https://github.com/kmacpher67/java-buildpack/blob/368dc9cc1a08670b49cdbf9d226eaae220ab4b77/spec/java_buildpack/framework/elastic_apm_agent_spec.rb#L80

์ด์ƒ์ ์œผ๋กœ๋Š” ์ด ์ž‘์—… ๋ฐฐํฌ๊ฐ€ CF ์•ฑ ๊ณต๊ฐ„์œผ๋กœ ์ด๋™ํ•˜๋ฉด Elastic 6.4 ์ธ์Šคํ„ด์Šค๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€ apm ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ์ŠคํŠธ๋ฆฌ๋ฐ์ด ์‹œ์ž‘๋˜๋Š” ๊ฒƒ์„ ๋ณด์‹ญ์‹œ์˜ค.

์˜ค. 'ํ–‰๋ณตํ•˜๊ฒŒ ํผํŒ…์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค!!' ์‹ค์ œ๋กœ ๋‚˜๋Š” diff๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ์žŠ์€ downloadcache.rb์— ์—ฌ์ „ํžˆ ๋””๋ฒ„๊น…์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. lol.

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

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

์ด์ œ ์ถฉ๋Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๋Œ€์ƒ ํ’€ ๋ธŒ๋žœ์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ APM์„ ์„ค์น˜ํ•  ๋กœ์ปฌ cf ELK6.4 ์„ค์น˜๋ฅผ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋ฌด์—‡์„ ๋ณด๊ณ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

@nebhale ๋‚ด๊ฐ€ ์ปค๋ฐ‹์„ ์Šค์ฟผ์‹œ/์Šค์ฟผ์‹œํ•˜๊ธฐ๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ฑฐ๊ธฐ์— ์ปค๋ฐ‹์œผ๋กœ +600๋ฒˆ์˜ ํ•ดํ‚น ๋ฐ˜๋ณต์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

@bvader
apm์— ๋Œ€ํ•ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” port8200์„ ๊ณต๊ฒฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํƒ„๋ ฅ์  ์˜คํ›„์— ๋Œ€ํ•œ ๋น ๋ฅธ ์‹œ์ž‘ ์„ค์ • ๊ฐ€์ด๋“œ์— ๊ฒŒ์œผ๋ฅธ ์‚ฌ๋žŒ์„ ์œ„ํ•œ ๋น ๋ฅธ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
```
2019-03-14T13:39:43.03-0400 [APP/PROC/WEB/0] OUT 2019-03-14 17:39:43.037 [apm-reporter] ์˜ค๋ฅ˜ co.elastic.apm.agent.report.IntakeV2ReportingEventHandler ์ด ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” METRICS ์œ ํ˜•์˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ์—ฐ๊ฒฐ ์‹œ๊ฐ„์ด ์ดˆ๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
2019-03-14T13:39:43.03-0400 [APP/PROC/WEB/0] OUT 2019-03-14 17:39:43.038 [apm-reporter] INFO co.elastic.apm.agent.report.IntakeV2ReportingEventHandler 1์ดˆ ๋™์•ˆ ๊บผ์ง(ยฑ10%)````

@kmacpher67

๋„์ปค๊ฐ€ ํŽธํ•˜๋‹ค๋ฉด ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์•ฝ๊ฐ„์˜ Elastic, Kibana, Apm-Server ํ™˜๊ฒฝ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ ๋‹ค์Œ์—
TAG=6.6.2 docker-compose -f elastic-apm-compose.yml up

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

๋‹ค์Œ์€ ๋กœ์ปฌ Java... ๋ฐ ํ…Œ์ŠคํŠธํ•  ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์ง€์นจ์ด ํฌํ•จ๋œ ์ƒ˜ํ”Œ Java ์•ฑ์ž…๋‹ˆ๋‹ค.
https://gist.github.com/bvader/cc9fea7e6f8f709dfa2ad14776eed7fe

apm-server๋งŒ ์›ํ•˜๋ฉด ์ตœ์†Œ ๊ตฌ์„ฑ์„ ๋‹ค์šด๋กœ๋“œ/์„ค์น˜ํ•˜๊ณ  ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. tar.gz ๋ฐ ์ตœ์†Œ ๊ตฌ์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

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

Elasticsearch ์ธ์Šคํ„ด์Šค์™€ apm-server ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ์ถœ๋ ฅ์„ ๊ตฌ์„ฑํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

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

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

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

  # Set gzip compression level.
  #compression_level: 0

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

๊ทธ๋Ÿฐ ๋‹ค์Œ ์‹คํ–‰

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

./apm-server -e

๋˜ํ•œ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์ด Kibana/Elasticsearch ์‚ฌ์ด๋“œ ๋Œ€์‹œ๋ณด๋“œ ๋“ฑ์„ ์—…๋กœ๋“œ/๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

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

@kmacpher67 APM ์„œ๋ฒ„์— ๋Œ€ํ•œ ์•ฝ๊ฐ„์˜ ๋„์›€/ํ˜‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์„ธ์š”. ํ™•๋Œ€/์ถ•์†Œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ด๋ฉ”์ผ๋กœ ์ง์ ‘ ์—ฐ๋ฝํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

์•„, ์ฒ˜์Œ์— "๋ฒ ํƒ€ ๋˜๋Š” ์‹คํ—˜"์— ๋Œ€ํ•ด ํ˜ผ๋™์„ ๋“œ๋ฆฐ ์  ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. " comment ์ €๋Š” CF ํ”„๋กœ์„ธ์Šค์™€ ๋นŒ๋“œํŒฉ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐฐ์šฐ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. I / We / Elastic / OSS ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๊ท€ํ•˜์˜ ๋…ธ๋ ฅ๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ •์‹ ์— ์ „์ ์œผ๋กœ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฃผ์— ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ €์žฅ์†Œ๋ฅผ ํ’€๋‹ค์šดํ•˜๊ณ  ๋‚ด ์ชฝ์—์„œ ์„ค์น˜/์‹คํ–‰์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

@nebhale

์ค€๋น„๊ฐ€ ๋˜๋ฉด PR์„ ๋ณผ ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ณ‘ํ•ฉ ์š”์ฒญ PULL์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์ง€๋งŒ ์ถฉ๋Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒ€ํ†  ์š”์ฒญ๋จ
์ด pull ์š”์ฒญ์— ๋Œ€ํ•œ ๊ฒ€ํ† ๊ฐ€ ์š”์ฒญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ‘ํ•ฉํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
@nebhale
nebhale์ด(๊ฐ€) ๊ฒ€ํ† ๋ฅผ ์š”์ฒญํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ๋ถ„๊ธฐ์—๋Š” ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ถฉ๋Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋งŒ pull ์š”์ฒญ์„ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ถฉ๋Œํ•˜๋Š” ํŒŒ์ผ

rakelib/versions_task.rb

๋‚˜๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์„ ํƒํ•˜๊ณ  ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์ด๋™ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ตœ์‹  ๋ฒ„์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด FORK๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด MR ์Šค๋ ˆ๋“œ์—์„œ ์ ‘๊ฑฐ๋‚˜ ๋‹ค์‹œ ์ œ์ถœํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ pull ์š”์ฒญ์— ๋”ฐ๋ผ ๋‹ซ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/cloudfoundry/java-buildpack/pull/696

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

bingosummer picture bingosummer  ยท  4์ฝ”๋ฉ˜ํŠธ

aknobloch picture aknobloch  ยท  8์ฝ”๋ฉ˜ํŠธ

edeandrea picture edeandrea  ยท  4์ฝ”๋ฉ˜ํŠธ

thorntonrp picture thorntonrp  ยท  4์ฝ”๋ฉ˜ํŠธ

chrylis picture chrylis  ยท  10์ฝ”๋ฉ˜ํŠธ