์ฃผ์
์๋ ค์ง ๋ฌธ์ : ์ด ๋ฆด๋ฆฌ์ค์๋ 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 ์ ์ด๋ฌํ ์ ์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ง์ง ์ฑ๋ช :
- ๋ด๋ ๋ฆญ์ ์์ด์ ํธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ต์ ๊ธฐ๋ฅ๊ณผ ์ฑ๋ฅ ์ด์ ์ ์ป์ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๋ํ, ์ด์ ๋ฆด๋ฆฌ์ค๋ ์ง์ ์ข ๋ฃ ์์ ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.