์๋ก์ด ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ์ฌํญ
- 2512๋ ์ @deleonenriqueta๊ฐ 25 ์ง์์ ์ถ๊ฐํ์ต๋๋ค.
- @jtduffy๊ฐ 2535์ Logback-1.5.20์ ๋ํ ์ง์์ ์ถ๊ฐํ์ต๋๋ค.
- @jtduffy๊ฐ 2490๋
์
call๋ฐexecSQL ํ์ ์ ๊ท ํํ์ ์คํ์ ๋นํ์ฑํํ๋ ๊ตฌ์ฑ ์ต์ ์ ์๊ฐํฉ๋๋ค. - @dhilpipre๊ฐ 2454๋ ์ Kotlin Coroutines v1.4+์ ๋ํ ์ง์์ ์ถ๊ฐํ์ต๋๋ค.
- @dhilpipre๊ฐ 2456๋ ์ Kotlin Coroutines ์ธ๋ถ์์ ์์ฑํ Kotlin Coroutines Suspend ํจ์์ ๋ํ ์ง์์ ์ถ๊ฐํฉ๋๋ค.
- @jbedell-newrelic์ด 2508๋ ์ ๋ฐ์ดํฐ์คํ ์ด๋ฅผ ๊ฐ์งํ๋ ๋์ ์ฌ๋ฌ ํธ์คํธ์ ๋ํ ๊ธฐ๋ณธ ์ค์ ๊ตฌ์ฑ์ ๋์ ํ์ต๋๋ค.
- @jtduffy๊ฐ 2509๋ ์ ์ํฐํฉํธ ๊ฑด๋๋ฐ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌ์ฑํ๊ธฐ ์ํ ์์คํ ์์ฑ์ ์ถ๊ฐํฉ๋๋ค.
- @sharvath-newrelic์ด 2532๋ ์ ์ปจํธ๋กค๋ฌ ํด๋์ค ์ด๋ฆ๊ณผ ๋ฉ์๋ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ Spring Controller ํธ๋์ญ์ ์ ์ด๋ฆ์ ์ง์ ํ ์ ์๋๋ก ํ๋ ์ค์ ์ต์ ์ ์ถ๊ฐํฉ๋๋ค.
- @jasonjkeller๊ฐ 2529๋
์ ๋ชจ๋
distributed_tracing.sampler๊ตฌ์ฑ์SamplerConfig๋ก ์ค์ํํ์ฌ SamplerConfig๋ฅผ ๊ตฌํํ์ต๋๋ค. - 2516๋
@sharvath-newrelic์ W3C Trace Context ์ง์๊ณผ ํจ๊ป ํ๋์ ์ธ ๋ณํ๊ธฐ ์ถ์ API๋ฅผ ์ฌ์ฉํ๋๋ก
kafka-clients-spans-0.11.0.0์์ฐ์ ์ธก์ , ํธ๋์ญ์ ์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
์์ ์ฌํญ
- 2497๋ @sharvath-newrelic์ ์ค๋ฅ ํด๋์ค ์ด๋ฆ ๊ตฌ๋ฌธ ๋ถ์์ ์์ ํ์ต๋๋ค.
- @jtduffy๊ฐ 2498๋ ์ ์ค๋ฅ ๋ก๊น ์์ ์ง๋์น๊ฒ ํฐ ์คํ ์ถ์ ์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์ฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
- 2501๋ @sharvath-newrelic์ ์ํ ๋ง์ถคํ ๋์๋ณด๋ ๋ฐ ๋ก๊น ์ด๋ฒคํธ์ ์ ํจํ์ง ์์ ์์ฑ์ ๋ํ ๋ก๊น ๋ฉ์์ง๋ฅผ ๋ช ํํ ํ์ต๋๋ค.
์ฌ์ฉ ์ค๋จ
๋ค์ ์ธก์ , ๊ณ์ธก ๋ชจ๋์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์์ ์ ๋๋ค.
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1spring-3.0.0thrift-0.8solr-4.0.0solr-5.0.0jdbc-inet-merliajdbc-inet-oranxograils-1.3rabbit-amqp-1.7.2rabbit-amqp-2.4.1rabbit-amqp-2.5.0rabbit-amqp-2.7.0glassfish-3hibernate-3.3hibernate-3.5jdbc-jtds
์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ
ํ์ฌ ์ฌ์ฉ ์ค์ธ Java ์์ด์ ํธ ๋ฒ์ ์ ์๋ณํ๋ ค๋ฉด java -jar newrelic.jar -v ์ ์คํํฉ๋๋ค. Java ์์ด์ ํธ ๋ฒ์ ์ด ์ฝ์์ ์ธ์๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ต์ Java ์์ด์ ํธ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ์ ์ฒด Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ ๋ฅผ ๋ค๋ฅธ ์์น์ ๋ฐฑ์
ํฉ๋๋ค. ํด๋น ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์
NewRelic_Agent#.#.#์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์ฌ๊ธฐ์#.#.#์ ์์ด์ ํธ ๋ฒ์ ๋ฒํธ์ ๋๋ค. - ์์ด์ ํธ๋ฅผ ๋ค์ด๋ก๋ํ์ธ์.
- ์ ์์ด์ ํธ ๋ค์ด๋ก๋ ํ์ผ์ ์์ถ์ ํผ ๋ค์
newrelic-api.jar๋ฐnewrelic.jar์ ์๋ Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์ ๋ณต์ฌํฉ๋๋ค. - ์ด์
newrelic.yml์ zip์์ ์๋ก ๋ค์ด๋ก๋ํnewrelic.yml๊ณผ ๋น๊ต ํ๊ณ ํ์ํ ๊ฒฝ์ฐ ํ์ผ์ ์ ๋ฐ์ดํธํฉ๋๋ค . - Java ๋์คํจ์ฒ๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
Java ์์ด์ ํธ ์ ๋ฐ์ดํธ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐฑ์ ๋ New Relic ์์ด์ ํธ ๋๋ ํฐ๋ฆฌ์์ ๋ณต์ํ์ญ์์ค.
์์ด์ ํธ ๊ตฌ์ฑ ์ฐจ์ด์ ์ ๋ฐ์ดํธ
์์ด์ ํธ์ ์ ๋ฒ์ ์ ์ถ์ํ ๋ newrelic.yml ์ ์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.diff ๋๋ ๋ค๋ฅธ diffing ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ ์ฌํญ์ ํ์ธํ๊ณ ์ด์ ํ์ผ์ ์ ๊ตฌ์ฑ ์ค์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.๋ผ์ด์ผ์ค ํค, ์ฑ ์ด๋ฆ ๋๋ ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ฐ์ด ํ์ผ์ ๋ํด ์ํํ ์ฌ์ฉ์ ์ ์๋ฅผ ๋ฎ์ด์ฐ์ง ์๋๋ก ํ์ญ์์ค.
์๋ฅผ ๋ค์ด, ืืื ื ๋ฒ์ 7.10.0 ๋ฐ 7.11.0์ ๋ํ ๊ธฐ๋ณธ newrelic.yml ํ์ผ์ diff ํ๋ ๊ฒฝ์ฐ ์ฝ์์ ์ธ์๋ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โ diff newrelic_7.10.0.yml newrelic_7.11.0.yml...107a108,119> # Whether the log events should include context from loggers with support for that.> context_data:>> # When true, application logs will contain context data.> enabled: false>> # A comma separated list of attribute keys whose values should be sent to New Relic.> #include:>> # A comma separated list of attribute keys whose values should not be sent to New Relic.> #exclude:>125a138>128c141< enabled: false---> enabled: true...์ด ์์์ ์ด๋ฌํ ์ค์ ืืื ๋ฒ์ 7.11.0์ ๊ธฐ๋ณธ newrelic.yml ์ ์ถ๊ฐ๋์์ต๋๋ค. 7.11.0 ์ด์์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์๋ newrelic.yml ์ ์ด๋ฌํ ์ ์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ง์ง ์ฑ๋ช :
- ๋ด๋ ๋ฆญ์ ์์ด์ ํธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ต์ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ์ด์ ์ ์ป์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๋ํ, ์ด์ ๋ฆด๋ฆฌ์ค๋ ์ง์ ์ข ๋ฃ ์์ ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ์ฌํญ
- @obenkenobi๊ฐ 2465๋ ์ MongoDB Reactive Streams 5.2.0 ์ด์์ ์ง์ํ์ต๋๋ค.
- @kanderson250์ด 2466๋ ์ Jedis 6์ ์ง์ํ์ต๋๋ค.
์์ ์ฌํญ
- CouchBase: ์ด์ค ์ธก์ ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฑด๋๋ฐ๊ธฐ ํด๋์ค ์ถ๊ฐ, 2462์์ @jtduffy ์์ฑ
- Spring WebClient 5.x: @jtduffy๊ฐ 2464๋ ์ ์์ฑํ ์ ์ฒด ์๋ต ๋์ ํค๋๋ง ๋ํ
์ฌ์ฉ ์ค๋จ
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1
์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ
ํ์ฌ ์ฌ์ฉ ์ค์ธ Java ์์ด์ ํธ ๋ฒ์ ์ ์๋ณํ๋ ค๋ฉด java -jar newrelic.jar -v ์ ์คํํฉ๋๋ค. Java ์์ด์ ํธ ๋ฒ์ ์ด ์ฝ์์ ์ธ์๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ต์ Java ์์ด์ ํธ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ์ ์ฒด Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ ๋ฅผ ๋ค๋ฅธ ์์น์ ๋ฐฑ์
ํฉ๋๋ค. ํด๋น ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์
NewRelic_Agent#.#.#์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์ฌ๊ธฐ์#.#.#์ ์์ด์ ํธ ๋ฒ์ ๋ฒํธ์ ๋๋ค. - ์์ด์ ํธ๋ฅผ ๋ค์ด๋ก๋ํ์ธ์.
- ์ ์์ด์ ํธ ๋ค์ด๋ก๋ ํ์ผ์ ์์ถ์ ํผ ๋ค์
newrelic-api.jar๋ฐnewrelic.jar์ ์๋ Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์ ๋ณต์ฌํฉ๋๋ค. - ์ด์
newrelic.yml์ zip์์ ์๋ก ๋ค์ด๋ก๋ํnewrelic.yml๊ณผ ๋น๊ต ํ๊ณ ํ์ํ ๊ฒฝ์ฐ ํ์ผ์ ์ ๋ฐ์ดํธํฉ๋๋ค . - Java ๋์คํจ์ฒ๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
Java ์์ด์ ํธ ์ ๋ฐ์ดํธ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐฑ์ ๋ New Relic ์์ด์ ํธ ๋๋ ํฐ๋ฆฌ์์ ๋ณต์ํ์ญ์์ค.
์์ด์ ํธ ๊ตฌ์ฑ ์ฐจ์ด์ ์ ๋ฐ์ดํธ
์์ด์ ํธ์ ์ ๋ฒ์ ์ ์ถ์ํ ๋ newrelic.yml ์ ์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.diff ๋๋ ๋ค๋ฅธ diffing ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ ์ฌํญ์ ํ์ธํ๊ณ ์ด์ ํ์ผ์ ์ ๊ตฌ์ฑ ์ค์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.๋ผ์ด์ผ์ค ํค, ์ฑ ์ด๋ฆ ๋๋ ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ฐ์ด ํ์ผ์ ๋ํด ์ํํ ์ฌ์ฉ์ ์ ์๋ฅผ ๋ฎ์ด์ฐ์ง ์๋๋ก ํ์ญ์์ค.
์๋ฅผ ๋ค์ด, ืืื ื ๋ฒ์ 7.10.0 ๋ฐ 7.11.0์ ๋ํ ๊ธฐ๋ณธ newrelic.yml ํ์ผ์ diff ํ๋ ๊ฒฝ์ฐ ์ฝ์์ ์ธ์๋ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โ diff newrelic_7.10.0.yml newrelic_7.11.0.yml...107a108,119> # Whether the log events should include context from loggers with support for that.> include_context_data:>> # When true, application logs will contain context data.> enabled: false>> # A comma separated list of attribute keys whose values should be sent to New Relic.> #include:>> # A comma separated list of attribute keys whose values should not be sent to New Relic.> #exclude:>125a138>128c141< enabled: false---> enabled: true...์ด ์์์ ์ด๋ฌํ ์ค์ ืืื ๋ฒ์ 7.11.0์ ๊ธฐ๋ณธ newrelic.yml ์ ์ถ๊ฐ๋์์ต๋๋ค. 7.11.0 ์ด์์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์๋ newrelic.yml ์ ์ด๋ฌํ ์ ์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ง์ง ์ฑ๋ช :
- ๋ด๋ ๋ฆญ์ ์์ด์ ํธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ต์ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ์ด์ ์ ์ป์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๋ํ, ์ด์ ๋ฆด๋ฆฌ์ค๋ ์ง์ ์ข ๋ฃ ์์ ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ์ฌํญ
- @jtduffy๊ฐ 2425๋ ์ graphql v24๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ ๋ฐ์ดํธํ์ต๋๋ค.
- ์์์ถ 6.5 ์ธก์ ์ถ๊ฐ, 2430๋ @kanderson250 ์์ฑ
- @jtduffy๊ฐ 2421๋ ์ commons-lang ๋ฒ์ ์ 3.18.0์ผ๋ก ์ฌ๋ ธ์ต๋๋ค.
- @kanderson250์ด 2423์ ๋ฐ์ดํฐ์คํ ์ด ๋งค๊ฐ๋ณ์์ lettuce dbName์ ์ถ๊ฐํ์ต๋๋ค.
- ํน์ ์ ํ๋ฆฌ์ผ์ด์
๊ตฌํ์ ๊ฑด๋๋ฐ๋ ค๋ฉด ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ํ๊ฒฝ ๋ณ์ ์ด๋ฆ์
NEW_RELIC_STARTUP_JAVA_ARTIFACT_SKIPS์ ๋๋ค. ๊ทธ ๊ฐ์ ์์ด์ ํธ๊ฐ ์ธก์ ํด์๋ ์ ๋๋ ์ฃผ์ ํด๋์ค, ์คํ ๊ฐ๋ฅํ jar ํ์ผ ๋๋ ืืืฉื ๊ธฐ๋ฐ ๋๊ตฌ/์ฑ์ ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ชฉ๋ก์ ๋๋ค(์:NEW_RELIC_STARTUP_JAVA_ARTIFACT_SKIPS=keytool,myapp.jar,IgnoreThisClass) @jtduffy๊ฐ 2433์ ๊ฒ์ํจ
์์ ์ฌํญ
- 8๊ฐ์ ์์ฑ์ด ์๋ SQS ๋ฉ์์ง๊ฐ AWS๋ก ์ ์ก๋์ง ์๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ์ต๋๋ค. SQS ๋ฉ์์ง๋ 2422๋ ์ @obenkenobi์ ์ํ ์์ถ ํธ๋ ์ด์ค ํค๋๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด 8๊ฐ ๋ฏธ๋ง์ ์์ฑ์ด ํ์ํฉ๋๋ค.
- @jbedell-newrelic๊ฐ 2440๋ ์ Azure Service Bus ํด๋ผ์ด์ธํธ์์ ํ ํฝ ์ด๋ฆ ๋์ "๊ตฌ๋ " ๋นํธ๋ฅผ ์๋ผ๋์ต๋๋ค.
- @jasonjkeller๊ฐ 2451๋ ์ AutoConfiguredOpenTelemetrySdk ๊ตฌ์ฑ์ ์์ ํ์ต๋๋ค.
์ฌ์ฉ ์ค๋จ
๋ค์ ์ธก์ , ๊ณ์ธก ๋ชจ๋์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์์ ์ ๋๋ค.
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1
์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ
ํ์ฌ ์ฌ์ฉ ์ค์ธ Java ์์ด์ ํธ ๋ฒ์ ์ ์๋ณํ๋ ค๋ฉด java -jar newrelic.jar -v ์ ์คํํฉ๋๋ค. Java ์์ด์ ํธ ๋ฒ์ ์ด ์ฝ์์ ์ธ์๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ต์ Java ์์ด์ ํธ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ์ ์ฒด Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ ๋ฅผ ๋ค๋ฅธ ์์น์ ๋ฐฑ์
ํฉ๋๋ค. ํด๋น ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์
NewRelic_Agent#.#.#์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์ฌ๊ธฐ์#.#.#์ ์์ด์ ํธ ๋ฒ์ ๋ฒํธ์ ๋๋ค. - ์์ด์ ํธ๋ฅผ ๋ค์ด๋ก๋ํ์ธ์.
- ์ ์์ด์ ํธ ๋ค์ด๋ก๋ ํ์ผ์ ์์ถ์ ํผ ๋ค์
newrelic-api.jar๋ฐnewrelic.jar์ ์๋ Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์ ๋ณต์ฌํฉ๋๋ค. - ์ด์
newrelic.yml์ zip์์ ์๋ก ๋ค์ด๋ก๋ํnewrelic.yml๊ณผ ๋น๊ต ํ๊ณ ํ์ํ ๊ฒฝ์ฐ ํ์ผ์ ์ ๋ฐ์ดํธํฉ๋๋ค . - Java ๋์คํจ์ฒ๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
Java ์์ด์ ํธ ์ ๋ฐ์ดํธ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐฑ์ ๋ New Relic ์์ด์ ํธ ๋๋ ํฐ๋ฆฌ์์ ๋ณต์ํ์ญ์์ค.
์์ด์ ํธ ๊ตฌ์ฑ ์ฐจ์ด์ ์ ๋ฐ์ดํธ
์์ด์ ํธ์ ์ ๋ฒ์ ์ ์ถ์ํ ๋ newrelic.yml ์ ์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.diff ๋๋ ๋ค๋ฅธ diffing ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ ์ฌํญ์ ํ์ธํ๊ณ ์ด์ ํ์ผ์ ์ ๊ตฌ์ฑ ์ค์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.๋ผ์ด์ผ์ค ํค, ์ฑ ์ด๋ฆ ๋๋ ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ฐ์ด ํ์ผ์ ๋ํด ์ํํ ์ฌ์ฉ์ ์ ์๋ฅผ ๋ฎ์ด์ฐ์ง ์๋๋ก ํ์ญ์์ค.
์๋ฅผ ๋ค์ด, ืืื ื ๋ฒ์ 7.10.0 ๋ฐ 7.11.0์ ๋ํ ๊ธฐ๋ณธ newrelic.yml ํ์ผ์ diff ํ๋ ๊ฒฝ์ฐ ์ฝ์์ ์ธ์๋ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โ diff newrelic_7.10.0.yml newrelic_7.11.0.yml...107a108,119> # Whether the log events should include context from loggers with support for that.> include_context_data:>> # When true, application logs will contain context data.> enabled: false>> # A comma separated list of attribute keys whose values should be sent to New Relic.> #include:>> # A comma separated list of attribute keys whose values should not be sent to New Relic.> #exclude:>125a138>128c141< enabled: false---> enabled: true...์ด ์์์ ์ด๋ฌํ ์ค์ ืืื ๋ฒ์ 7.11.0์ ๊ธฐ๋ณธ newrelic.yml ์ ์ถ๊ฐ๋์์ต๋๋ค. 7.11.0 ์ด์์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์๋ newrelic.yml ์ ์ด๋ฌํ ์ ์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ง์ง ์ฑ๋ช :
- ๋ด๋ ๋ฆญ์ ์์ด์ ํธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ต์ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ์ด์ ์ ์ป์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๋ํ, ์ด์ ๋ฆด๋ฆฌ์ค๋ ์ง์ ์ข ๋ฃ ์์ ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ์ฌํญ
- Azure ์๋น์ค๋ฒ์ค 7.15.0 ์ธก์ , ๋๊ตฌ, ์์ฑ์: @jbedell-newrelic, 2384
- @jbedell-newrelic๊ฐ 2399๋ ์ Azure App Services์ ๋ํ ๋ฉํ๋ฐ์ดํฐ ์ฐ๊ฒฐ
- @jtduffy๊ฐ 2377๋ ์ ์ฐ๊ฒฐ ์ค๋ฅ๋ฅผ SEVERE๋ก ๋ณด๊ณ ํ์ต๋๋ค.
- 2388๋ @jtduffy์ ์ํด ๋ก๊ทธ์ธ ๋ฐ ์ด๋ฒคํธ์ ์์ฑ์ผ๋ก ์ถ๊ฐ๋ ์ ํจํ์ง ์์ ํค๋ฅผ ๋ก๊ทธ์ธ ๋ฐ ๋๋ ํํฉ๋๋ค.
์์ ์ฌํญ
- @meiao๊ฐ 2383๋ ์ IntelliJ ์ฃผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ ํ์ต๋๋ค.
- @jtduffy๊ฐ 2386๋ ์ ์๋ฒ ์ธก sampling_target ์ค์ ์ ์ง์ํ์ต๋๋ค.
- 2400์์ @deleonenriqueta์ ์ํ ์ ์ฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์์ ํ๊ธฐ ์ํด MonoFlatMapMain ์ธก์ , ๋ก๊ทธ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
์ฌ์ฉ ์ค๋จ
๋ค์ ์ธก์ , ๊ณ์ธก ๋ชจ๋์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์์ ์ ๋๋ค.
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1
์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ
ํ์ฌ ์ฌ์ฉ ์ค์ธ Java ์์ด์ ํธ ๋ฒ์ ์ ์๋ณํ๋ ค๋ฉด java -jar newrelic.jar -v ์ ์คํํฉ๋๋ค. Java ์์ด์ ํธ ๋ฒ์ ์ด ์ฝ์์ ์ธ์๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ต์ Java ์์ด์ ํธ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ์ ์ฒด Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ ๋ฅผ ๋ค๋ฅธ ์์น์ ๋ฐฑ์
ํฉ๋๋ค. ํด๋น ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์
NewRelic_Agent#.#.#์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์ฌ๊ธฐ์#.#.#์ ์์ด์ ํธ ๋ฒ์ ๋ฒํธ์ ๋๋ค. - ์์ด์ ํธ๋ฅผ ๋ค์ด๋ก๋ํ์ธ์.
- ์ ์์ด์ ํธ ๋ค์ด๋ก๋ ํ์ผ์ ์์ถ์ ํผ ๋ค์
newrelic-api.jar๋ฐnewrelic.jar์ ์๋ Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์ ๋ณต์ฌํฉ๋๋ค. - ์ด์
newrelic.yml์ zip์์ ์๋ก ๋ค์ด๋ก๋ํnewrelic.yml๊ณผ ๋น๊ต ํ๊ณ ํ์ํ ๊ฒฝ์ฐ ํ์ผ์ ์ ๋ฐ์ดํธํฉ๋๋ค . - Java ๋์คํจ์ฒ๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
Java ์์ด์ ํธ ์ ๋ฐ์ดํธ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐฑ์ ๋ New Relic ์์ด์ ํธ ๋๋ ํฐ๋ฆฌ์์ ๋ณต์ํ์ญ์์ค.
์์ด์ ํธ ๊ตฌ์ฑ ์ฐจ์ด์ ์ ๋ฐ์ดํธ
์์ด์ ํธ์ ์ ๋ฒ์ ์ ์ถ์ํ ๋ newrelic.yml ์ ์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.diff ๋๋ ๋ค๋ฅธ diffing ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ ์ฌํญ์ ํ์ธํ๊ณ ์ด์ ํ์ผ์ ์ ๊ตฌ์ฑ ์ค์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.๋ผ์ด์ผ์ค ํค, ์ฑ ์ด๋ฆ ๋๋ ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ฐ์ด ํ์ผ์ ๋ํด ์ํํ ์ฌ์ฉ์ ์ ์๋ฅผ ๋ฎ์ด์ฐ์ง ์๋๋ก ํ์ญ์์ค.
์๋ฅผ ๋ค์ด, ืืื ื ๋ฒ์ 7.10.0 ๋ฐ 7.11.0์ ๋ํ ๊ธฐ๋ณธ newrelic.yml ํ์ผ์ diff ํ๋ ๊ฒฝ์ฐ ์ฝ์์ ์ธ์๋ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โ diff newrelic_7.10.0.yml newrelic_7.11.0.yml...107a108,119> # Whether the log events should include context from loggers with support for that.> include_context_data:>> # When true, application logs will contain context data.> enabled: false>> # A comma separated list of attribute keys whose values should be sent to New Relic.> #include:>> # A comma separated list of attribute keys whose values should not be sent to New Relic.> #exclude:>125a138>128c141< enabled: false---> enabled: true...์ด ์์์ ์ด๋ฌํ ์ค์ ืืื ๋ฒ์ 7.11.0์ ๊ธฐ๋ณธ newrelic.yml ์ ์ถ๊ฐ๋์์ต๋๋ค. 7.11.0 ์ด์์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์๋ newrelic.yml ์ ์ด๋ฌํ ์ ์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ง์ง ์ฑ๋ช :
- ๋ด๋ ๋ฆญ์ ์์ด์ ํธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ต์ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ์ด์ ์ ์ป์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๋ํ, ์ด์ ๋ฆด๋ฆฌ์ค๋ ์ง์ ์ข ๋ฃ ์์ ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.
์ฃผ์
์๋ ค์ง ๋ฌธ์ : ์ด ๋ฆด๋ฆฌ์ค์๋ Netty Reactor์ ํน์ ์ฌ์ฉ๊ณผ ๊ด๋ จํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ผ์ผํฌ ์ ์๋ ์๋ ค์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ค๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
์๋ก์ด ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ์ฌํญ
- Reactor
Mono.flatMapํธ์ถ 2308์ ๋ํ ๊ฐ์์ฑ์ ํฅ์์ํต๋๋ค. - ํต์ฌ Kafka ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 2312๋ฅผ ์ฌ์ฉํ ๋ Spring-Kafka์ ๋ํ ์๋ก์ด ์ธก์ , ์์ ๋ฐ ์์ ์ ์ถ๊ฐํฉ๋๋ค.
- Kafka 3.7+ 2358์ ๋ํ
KafkaConsumerConfig์ด๋ฒคํธ ์ง์์ ์ถ๊ฐํฉ๋๋ค.
์์ ์ฌํญ
distributed_tracing.sampler๊ตฌ์ฑ 2330์์์ ํฉ๋๋ค.Scala 2.12 ๋ฐ JDK 11์ ์ฌ์ฉํ ๋ ๋ฐ์ํ ์ ์๋ ๋ถ๋ฒ ์ก์ธ์ค ์ค๋ฅ๋ฅผ ์์ ํฉ๋๋ค. ์์ด์ ํธ๊ฐ Scala 2.12๋ฅผ ๊ฐ์งํ ์ ์๋ ๊ฒฝ์ฐ(์ด๋ฅผ ์ํด ์์คํ ํด๋์ค ๋ก๋๋ฅผ ํ์ธํฉ๋๋ค. ํนํ sbt๋ Scala ํด๋์ค๋ฅผ ์ฌ์ฉ์ ์ ์ Scala ๋ก๋์ ๋ก๋ํฉ๋๋ค) ์์คํ ์์ฑ
-Dnewrelic.config.class_transformer.illegal_access_fix=true2334๋ฅผํตํด ์๋์ผ๋ก ์์ ์ ํ์ฑํํ๋ ๊ธฐ๋ฅ ํ๋๊ทธ๋ ์์ต๋๋ค.Netty '์ ์ ์์' ํธ๋์ญ์ 2274 2355์์
- ์ด ์์ ์ฌํญ์ ์ด์ ์ Netty ์ธก์ ๋ฐ ๊ณ์ธก ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋ฅ ํ๋๊ทธ ๋ค๋ก ์ฎ๊ฒจ์ HTTP2 ํธ๋์ญ์ ๊ณผ ๊ด๋ จ๋ ์ผ๋ถ ๊ฒฝ์ฐ์ ์ถ๊ฐ ๊ฐ์์ฑ์ ์ ๊ณตํฉ๋๋ค. ์ด ์ธ๋ถ์ฑ์ ๋ค์ ํ์ฑํํ๋ ค๋ฉด(์ ์ ์๋ ๊ฑฐ๋๊ฐ ํ์๋ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ์์) ๋ค์ ๊ตฌ์ฑ ์ค์ ์ ์ฌ์ฉํ์ธ์.
netty:http2:frame_read_listener:start_transaction: true- 8.20์ ์์ด์ ํธ ๊ตฌ์ฑ์ ๋ ผ๋ฆฌ ์ค๋ฅ๊ฐ ์์ผ๋ฏ๋ก ํด๋น ์์ ์ฌํญ์ ์์ด์ ํธ ๋ฒ์ 8.21 ์ด์์์๋ง ๊ณต์์ ์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
SQS ๋ฉ์์ง์ ๋ํ ๋ถ์ฐ ํธ๋ ์ด์ค ํค๋๋ฅผ ์ถ๊ฐํ๋ ์๊ธฐ์ ๋ํ ์ ํ์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ๋ฉ์์ง ๋ด์ฉ์ ๋ฐ์ดํธ ํฌ๊ธฐ์ ์์ฑ ํฌ๊ธฐ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ํฌ๊ธฐ๊ฐ 251KB๋ณด๋ค ํฌ๊ฑฐ๋ ์์ฑ์ด 9๊ฐ ์ด์์ธ ๋ฉ์์ง๋ ๋ถ์ฐ ํธ๋ ์ด์ค ํค๋ ์ถ๊ฐ์์ ์ ์ธ๋ฉ๋๋ค . 2353
๊ณ ๊ฐ ํ๊ฒฝ๊ณผ์ ์ถฉ๋์ ๋ฐฉ์งํ๊ธฐ ์ํด
org.cracJAR์ ์จ๊ธธ ์ ์์ต๋๋ค. 2344PR #1927์์
NullPointerExceptions์ด ์ด์ ๋ฒ์ ์vertx-core์ธก์ ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฐฑํฌํธ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ์ต๋๋ค. ๊ณ์ธก 2327HttpUrlConnection๋ฉ์๋ ํธ์ถ๋ก ์ธํด ๊ณผ๋ํ ํธ๋์ญ์ ์ธ๊ทธ๋จผํธ๊ฐ ์์ฑ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค(์:getInputStream) ์ธ๋ถ ํธ์ถ๊ณผ ์ฐ๊ด๋์ง ์์ ๊ฒฝ์ฐ. ์ด ๋์์ ๋ค์ ๊ตฌ์ฑ ์ต์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค:NEW_RELIC_CLASS_TRANSFORMER_COM_NEWRELIC_INSTRUMENTATION_HTTPURLCONNECTION_VERBOSE=false, sys prop-Dnewrelic.config.class_transformer.com.newrelic.instrumentation.httpurlconnection.verbose=false๋๋newrelic.yml์ ๋๋ฑํ ์ . ๊ธฐ๋ณธ ์ค์ ์true์ ๋๋ค(์ฆ ์ธ๋ถ๊ฐ ์๋getInputStream๋ฐ ๊ธฐํ ์๋ต ์ฒ๋ฆฌ๊ธฐ ๋ฉ์๋๋ ์ด์ ๊ณผ ๊ฐ์ด ๋ณด๊ณ ๋ฉ๋๋ค. 2365
๋ณด์
- ๋ฌดํ ์ถ์ 2339๋ก ๋ณด์์ ๊ฐํํ๊ธฐ ์ํด
com.newrelic.agent.java:infinite-tracing-protobuf์ ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค. - ๋ณด์ ์ทจ์ฝ์ 2333์ํด๊ฒฐํ๊ธฐ ์ํด
snakeyamlcom.konloch:safeyaml๋ก ๋ฐ๊ฟ๋๋ค.
์ฌ์ฉ ์ค๋จ
๋ค์ ์ธก์ , ๊ณ์ธก ๋ชจ๋์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ฑฐ๋ ์์ ์ ๋๋ค.
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1
IAST
CSEC ๋ฒ์ 1.7.0 2348 ์ ๋ฐ์ดํธ ๋ณ๊ฒฝ ์ฌํญ: https://github.com/newrelic/csec-java-agent/releases/tag/1.7.0
์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธ
ํ์ฌ ์ฌ์ฉ ์ค์ธ Java ์์ด์ ํธ ๋ฒ์ ์ ์๋ณํ๋ ค๋ฉด java -jar newrelic.jar -v ์ ์คํํฉ๋๋ค. Java ์์ด์ ํธ ๋ฒ์ ์ด ์ฝ์์ ์ธ์๋ฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ต์ Java ์์ด์ ํธ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ์ ์ฒด Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ ๋ฅผ ๋ค๋ฅธ ์์น์ ๋ฐฑ์
ํฉ๋๋ค. ํด๋น ๋๋ ํ ๋ฆฌ์ ์ด๋ฆ์
NewRelic_Agent#.#.#์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์ฌ๊ธฐ์#.#.#์ ์์ด์ ํธ ๋ฒ์ ๋ฒํธ์ ๋๋ค. - ์์ด์ ํธ๋ฅผ ๋ค์ด๋ก๋ํ์ธ์.
- ์ ์์ด์ ํธ ๋ค์ด๋ก๋ ํ์ผ์ ์์ถ์ ํผ ๋ค์
newrelic-api.jar๋ฐnewrelic.jar์ ์๋ Java ์์ด์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์ ๋ณต์ฌํฉ๋๋ค. - ์ด์
newrelic.yml์ zip์์ ์๋ก ๋ค์ด๋ก๋ํnewrelic.yml๊ณผ ๋น๊ต ํ๊ณ ํ์ํ ๊ฒฝ์ฐ ํ์ผ์ ์ ๋ฐ์ดํธํฉ๋๋ค . - Java ๋์คํจ์ฒ๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
Java ์์ด์ ํธ ์ ๋ฐ์ดํธ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐฑ์ ๋ New Relic ์์ด์ ํธ ๋๋ ํฐ๋ฆฌ์์ ๋ณต์ํ์ญ์์ค.
์์ด์ ํธ ๊ตฌ์ฑ ์ฐจ์ด์ ์ ๋ฐ์ดํธ
์์ด์ ํธ์ ์ ๋ฒ์ ์ ์ถ์ํ ๋ newrelic.yml ์ ์ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.diff ๋๋ ๋ค๋ฅธ diffing ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋ ์ฌํญ์ ํ์ธํ๊ณ ์ด์ ํ์ผ์ ์ ๊ตฌ์ฑ ์ค์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.๋ผ์ด์ผ์ค ํค, ์ฑ ์ด๋ฆ ๋๋ ๊ธฐ๋ณธ ์ค์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ฐ์ด ํ์ผ์ ๋ํด ์ํํ ์ฌ์ฉ์ ์ ์๋ฅผ ๋ฎ์ด์ฐ์ง ์๋๋ก ํ์ญ์์ค.
์๋ฅผ ๋ค์ด, ืืื ื ๋ฒ์ 7.10.0 ๋ฐ 7.11.0์ ๋ํ ๊ธฐ๋ณธ newrelic.yml ํ์ผ์ diff ํ๋ ๊ฒฝ์ฐ ์ฝ์์ ์ธ์๋ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โ diff newrelic_7.10.0.yml newrelic_7.11.0.yml...107a108,119> # Whether the log events should include context from loggers with support for that.> context_data:>> # When true, application logs will contain context data.> enabled: false>> # A comma separated list of attribute keys whose values should be sent to New Relic.> #include:>> # A comma separated list of attribute keys whose values should not be sent to New Relic.> #exclude:>125a138>128c141< enabled: false---> enabled: true...์ด ์์์ ์ด๋ฌํ ์ค์ ืืื ๋ฒ์ 7.11.0์ ๊ธฐ๋ณธ newrelic.yml ์ ์ถ๊ฐ๋์์ต๋๋ค. 7.11.0 ์ด์์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ ์๋ newrelic.yml ์ ์ด๋ฌํ ์ ์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ง์ง ์ฑ๋ช :
- ๋ด๋ ๋ฆญ์ ์์ด์ ํธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ต์ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ์ด์ ์ ์ป์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๋ํ, ์ด์ ๋ฆด๋ฆฌ์ค๋ ์ง์ ์ข ๋ฃ ์์ ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.