New Relic Ruby ์์ด์ ํธ ๋ grpc gem(๋ฒ์ 1.0.0 ์ด์)์ ์ฌ์ฉํ๋ gRPC ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ๋ฅผ ์๋์ผ๋ก ๊ณ์ธกํฉ๋๋ค. ๋จํญ, ์๋ฐฉํฅ, ํด๋ผ์ด์ธํธ ์คํธ๋ฆฌ๋ฐ ๋ฐ ์๋ฒ ์คํธ๋ฆฌ๋ฐ๊ณผ ๊ฐ์ ๋ชจ๋ ํต์ ์ ํ์ด ์ง์๋ฉ๋๋ค.
์ค์
gRPC ๊ณ์ธก์๋ Ruby ์์ด์ ํธ ๋ฒ์ 8.10.0 ์ด์์ด ํ์ํฉ๋๋ค.
๊ตฌ์ฑ(๋ชจ๋ ์ค์ ์ ์ ํ ์ฌํญ์)
gRPC ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๊ณ์ธก์ ๋ณ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๊ตฌ์ฑ ์ต์
๋ชจ๋ automatic
์ ์ฝ์์ธ auto
๋ก ์ค์ ๋ฉ๋๋ค. ๊ฐ๊ฐ์ ๋ํ ์์ด์ ํธ์ ์๋ ๋์์ ์ฒ์์๋ Ruby ๋ชจ๋ ์์ ์ถ๊ฐ ๋์์ ํ์ฉํ๊ณ ์๋ ค์ง ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ Ruby ๋ฉ์๋ ์ฐ๊ฒฐ ๋์์ผ๋ก ํด๋ฐฑํ์ฌ ๊ณ์ธก์ ํ์ฑํํ๋ ๊ฒ์
๋๋ค.
๋ค์ ์น์ ์์ ์ถ๊ฐ ์ต์ ๊ณผ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ์ต์
New Relic ๊ตฌ์ฑ ํ์ผ์ ์์ ํ๊ฑฐ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌ ์์ด์ ํธ์ ๋์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋์ ์ ์ฉ๋๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
auto
: ์๋ Ruby ๋ฉ์๋ ๋์ ์ ํ์ ํตํด ํ์ฑํ๋๋ ๊ธฐ๋ณธ๊ฐdisabled
: ๊ณ์ธก ๋นํ์ฑํprepend
: ์์ Ruby ๋ฉ์๋๋ฅผ ๊ฐ์ ๋ก ์ฌ์ฉchain
: Ruby ๋ฉ์๋ ์ฒด์ด๋ ๊ฐ์ ์ฌ์ฉ
ํด๋ผ์ด์ธํธ๋ณ ์ต์
ํด๋ผ์ด์ธํธ์ ๋ํด์๋ง ๋ค์์ ์ฌ์ฉํ์ญ์์ค.
- ๊ตฌ์ฑ ํ์ผ ๋งค๊ฐ๋ณ์:
instrumentation.grpc_client
- ํ๊ฒฝ ๋ณ์:
NEW_RELIC_INSTRUMENTATION_GRPC_CLIENT
์๋ฒ๋ณ ์ต์
์๋ฒ์ ๋ํด์๋ง ๋ค์์ ์ฌ์ฉํ์ญ์์ค.
- ๊ตฌ์ฑ ํ์ผ ๋งค๊ฐ๋ณ์:
instrumentation.grpc_server
- ํ๊ฒฝ ๋ณ์:
NEW_RELIC_INSTRUMENTATION_GRPC_SERVER
ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ๊ตฌ์ฑ์ ์
๊ตฌ์ฑ ํ์ผ์ ํตํด gRPC ์๋ฒ ๊ณ์ธก์ ๋นํ์ฑํํ๋ ค๋ฉด:
# newrelic.ymlinstrumentation.grpc_server: disabled
ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด gRPC ํด๋ผ์ด์ธํธ ๊ณ์ธก์ ๋นํ์ฑํํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
export NEW_RELIC_INSTRUMENTATION_GRPC_CLIENT=disabled
ํ์ธ
New Relic Ruby ์์ด์ ํธ๊ฐ ์์๋๋ฉด ๋ก๋๋ grpc
gem์ ์กด์ฌ๋ฅผ ๊ฐ์งํ ๋ค์ gRPC ๊ณ์ธก ์ ์ฉ์ ์๋ํฉ๋๋ค. gRPC ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ๊ตฌ์ฑ ์์์ ๋ํด ์ด ๊ณ์ธก์ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉํ๋ฉด ์์ด์ ํธ๋ ๋ก๊ทธ ํ์ผ(๊ธฐ๋ณธ์ ์ผ๋ก log/newrelic_agent.log
)์ ๋ค์ ์ค์ ์๋๋ค.
INFO : Installing New Relic supported gRPC_Client instrumentation using PrependINFO : Installing New Relic supported gRPC_Server instrumentation using Prepend
์ฉ๋ฒ
๊ณ์ธก์ด ์ ๋๋ก ์๋ํ๋ ํ(์์ ํ์ธ ์ ์ฐธ์กฐํ์ฌ ํ์ธ) New Relic Ruby ์์ด์ ํธ๊ฐ ์ํํ๋ ๋ชจ๋ ๊ณ์ธก์ ์์ ์๋์ด์ด์ผ ํ๋ฉฐ ๊ธฐ์กด gRPC ํด๋ผ์ด์ธํธ ๋ฐ/๋๋ ์๋ฒ ์ฝ๋๋ฅผ ์์ ํ ํ์๊ฐ ์์ต๋๋ค.
New Relic Ruby ์์ด์ ํธ์ gRPC ๊ณ์ธก์๋ ์คํฌ์ ๋ถ์ฐ ์ถ์ ํค๋๊ฐ ํฌํจ๋์ด ์์ด gRPC ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ํธ์ถ์ W3C ๋ถ์ฐ ์ถ์ ์ ์ง์ํ๋ ๋ค๋ฅธ ์๋น์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. gRPC ์์ฒญ์ Ruby ๊ธฐ๋ฐ ํด๋ผ์ด์ธํธ์์ ๋ค๋ฅธ ์ธ์ด ๊ธฐ๋ฐ ์๋ฒ๋ก ๋ณด๋ผ ์ ์์ผ๋ฉฐ Ruby ๊ธฐ๋ฐ ์๋ฒ๋ ๋ค๋ฅธ ์ธ์ด ๊ธฐ๋ฐ ํด๋ผ์ด์ธํธ์์ ์ค๋ ์์ฒญ์ ํ๋๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ค์
gRPC ํด๋ผ์ด์ธํธ ์์ฒญ์ ๊ธฐ์กด New Relic ํธ๋์ญ์ ์ด ์์ ๋ ์์ฑ๋์ง ์๋ ํ New Relic์ ๋ณด๊ณ ๋์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๊ฒ์ Rails ์ปจํธ๋กค๋ฌ ๋ฉ์๋ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ํ๋ก์ธ์ค๊ฐ ํ์ฑ ์ํ์ด๊ณ gRPC ํด๋ผ์ด์ธํธ ์์ฒญ ํธ์ถ์ ๋ด๋นํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์ฒญ์ New Relic ์น UI์์ ํด๋น ์ธ๋ถ ๋ํผ์ ํธ๋์ญ์ ์๋์ ๋กค์ ๋ฉ๋๋ค.
gRPC ์๋ฒ ์์ฒญ์ ํญ์ ์๋ก์ด New Relic ํธ๋์ญ์ ์ ์์ฑํ๋ฉฐ ๊ธฐ์กด New Relic ํธ๋์ญ์ ์ ์๊ตฌํ๊ฑฐ๋ ๋กค์ ํ์ง ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ณด๊ธฐ
New Relic UI์ ์ฌ๋ฌ ํ์ด์ง์์ ์์ง๋ gRPC ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์์ฝ ํ์ด์ง
UI ์์ฝ ํ์ด์ง ์์ gRPC ํด๋ผ์ด์ธํธ ์์ฒญ์ ์น ํธ๋์ญ์ ์ผ๋ก ๋ํ๋๋ฉฐ ์น ํธ๋์ญ์ ์๊ฐ , ์ฒ๋ฆฌ๋ ๋ฐ ์ค๋ฅ์จ ์ฐจํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ถ์ฐ ์ถ์ ํ์ด์ง
ํ
๋ถ์ฐ ์ถ์ ์ ์ Ruby ์์ด์ ํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ง๋ง ์ง๋ฌธ์ด ์๋ ๊ฒฝ์ฐ Ruby ์๋น์ค์ ๋ํ ๋ถ์ฐ ์ถ์ ์ ์ฐธ์กฐํ์ญ์์ค.
UI์ ๋ถ์ฐ ์ถ์ ํ์ด์ง์์ gRPC ๋ฐ์ดํฐ๋ฅผ ํ์ธํ์ธ์.
one.newrelic.com > All capabilities > APM & services ๋ก ์ด๋ํฉ๋๋ค.
์ํฐํฐ(์๋น์ค)๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ผ์ชฝ ์ฐฝ์ ๋ชจ๋ํฐ ์น์ ์์ ๋ถ์ฐ ์ถ์ ์ ํด๋ฆญํฉ๋๋ค.
์ถ์ ๊ทธ๋ฃน์ ํด๋ฆญํ์ญ์์ค.
๋ชฉ๋ก์์ ํธ๋ ์ด์ค๋ฅผ ์ ํํ๊ณ ํด๋ฆญํฉ๋๋ค.
๋ชจ๋ ํ์ฅ ์ ํด๋ฆญํฉ๋๋ค.
์ถ์ ๋ฒ์์ ๊ฒฐ๊ณผ ๋ชฉ๋ก์์ ๊ฐ๋ณ ์ถ์ ๋ฒ์๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ค๋ฅธ์ชฝ ์ฐฝ์์ ์์ฑ ํญ์ ํด๋ฆญํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธ์คํด์ค:
grpc_status
,grpc_type
,http.method
๋ฐhttp.url
์์ฑ์ด ๋ชจ๋ ํ์๋์ด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์คํจํ ๊ฒฝ์ฐ(0
์ด์ธ์grpc_status
๊ฐ์ ๊ฐ์ง) ์ถ๊ฐgrpc_message
์์ฑ์ด gRPC ์ํ ๋ฉ์์ง์ ํจ๊ป ๋ํ๋ฉ๋๋ค. - ์๋ฒ ์ธ์คํด์ค:
request.grpc_type
,request.method
๋ฐrequest.uri
์์ฑ์ด ๋ชจ๋ ํ์๋์ด์ผ ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธ์คํด์ค:
ํด๋ผ์ด์ธํธ์ ์๋ฒ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ชจ๋ gRPC(Ruby ๋๋ ๋ค๋ฅธ ์ธ์ด)๋ฅผ ์ง์ํ๋ New Relic ์์ด์ ํธ์ ์ํด ๋ชจ๋ํฐ๋ง๋๋ ํ ๋ถ์ฐ ์ถ์ ๋งต์ ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
- ํด๋ผ์ด์ธํธ ๋ฐ ์๋ฒ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ํ์ํฉ๋๋ค.
- ๊ทธ๋ค ์ฌ์ด์์ ์ผ๋ง๋ ๋ง์ ๊ณ ์ ํ ํธ์ถ ์ ํ์ด ์ํ๋์๋์ง ๋ณด๊ณ ํฉ๋๋ค.
gRPC ๊ธฐ๋ฐ Ruby ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์์ธ์ ๋ํ ์ ๋ณด๊ฐ Events > Errors ํ์ด์ง์ ๋ํ๋ฉ๋๋ค.
์ง์ ๋ฐ ํผ๋๋ฐฑ
New Relic Ruby ์์ด์ ํธ์ gRPC ๊ณ์ธก๊ณผ ๊ด๋ จ๋ ์ง์ ๋ฐ/๋๋ ํผ๋๋ฐฑ์ ์ํด New Relic์ ์ฐ๋ฝํ ๋ ๋ค์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ์ป์ผ์ญ์์ค.
- ์ด๋ค ๋ฒ์ ์
grpc
gem์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? - New Relic Infinite Tracing์ ์ฌ์ฉํฉ๋๊น?
- ์ ํ๋ฆฌ์ผ์ด์ ํ๊ฒฝ์ ์ด๋ป๊ฒ ์ค๋ช ํ์๊ฒ ์ต๋๊น? (Framework, Ruby ๋ฒ์ , ๊ธฐํ ํต์ฌ ๊ธฐ์ ์ฌ์ฉ)
- gRPC๋ ๋ฌด์์ ์ฌ์ฉํฉ๋๊น?
- gRPC ํด๋ผ์ด์ธํธ์ Ruby๋ฅผ ์ฌ์ฉํฉ๋๊น?
- gRPC ํด๋ผ์ด์ธํธ์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ฌ์ฉํฉ๋๊น?
- gRPC ์๋ฒ์ Ruby๋ฅผ ์ฌ์ฉํฉ๋๊น?
- gRPC ์๋ฒ์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ฌ์ฉํฉ๋๊น?
- gRPC ํด๋ผ์ด์ธํธ ์ฝ๋๋ฅผ ์ด๋์์ ํธ์ถํ๊ณ ์์ต๋๊น? (์ปจํธ๋กค๋ฌ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋ฑ์์)
- ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ธฐ ์ํด ์ด๋ค ์ ๋ต/์ ๋ต์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? (๋จํญ, ์๋ฐฉํฅ, ํด๋ผ์ด์ธํธ ์คํธ๋ฆฌ๋ฐ, ์๋ฒ ์คํธ๋ฆฌ๋ฐ)