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 클라이언트 요청은 웹 트랜잭션으로 표시되며 Web transactions time, Throughput 및 Error rate 차트에 데이터를 제공합니다.
분산 추적 페이지
팁
분산 추적은 새 Ruby 에이전트에서 기본적으로 켜져 있지만 질문이 있는 경우 Ruby 서비스에 대한 분산 추적을 참조하십시오.
UI의 분산 추적 페이지에서 gRPC 데이터를 확인하세요.
one.newrelic.com > All capabilities > APM & services 으)로 이동합니다.
엔터티(서비스)를 클릭합니다.
왼쪽 창의 Monitor 섹션에서 Distributed tracing 클릭합니다.
추적 그룹을 클릭하십시오.
목록에서 트레이스를 선택하고 클릭합니다.
Expand all 을(를) 클릭합니다.
추적 범위의 결과 목록에서 개별 추적 범위를 클릭합니다.
오른쪽 창에서 Attributes 탭을 클릭합니다.
- Client instances:
grpc_status
,grpc_type
,http.method
및http.url
속성이 모두 표시되어야 합니다. 클라이언트 요청이 실패하는 경우(0
이외의grpc_status
값을 가짐) 추가grpc_message
속성이 gRPC 상태 메시지와 함께 표시됩니다. - Server instances:
request.grpc_type
,request.method
및request.uri
속성이 모두 표시되어야 합니다.
- Client instances:
클라이언트와 서버 응용 프로그램이 모두 gRPC(Ruby 또는 다른 언어)를 지원하는 New Relic 에이전트에 의해 모니터링되는 한 분산 추적 맵은 다음을 수행해야 합니다.
- 클라이언트 및 서버 응용 프로그램을 모두 표시합니다.
- 그들 사이에서 얼마나 많은 고유한 호출 유형이 수행되었는지 보고합니다.
gRPC 기반 루비 예외가 발생하면 예외에 대한 정보가 Events > Errors 페이지에 표시됩니다.
지원 및 피드백
New Relic Ruby 에이전트의 gRPC 계측과 관련된 지원 및/또는 피드백을 위해 New Relic에 연락할 때 다음 질문에 대한 답변을 얻으십시오.
- 어떤 버전의
grpc
gem을 사용하고 있습니까? - New Relic Infinite Tracing을 사용합니까?
- 애플리케이션 환경을 어떻게 설명하시겠습니까? (Framework, Ruby 버전, 기타 핵심 기술 사용)
- gRPC는 무엇에 사용합니까?
- gRPC 클라이언트에 Ruby를 사용합니까?
- gRPC 클라이언트에 다른 언어를 사용합니까?
- gRPC 서버에 Ruby를 사용합니까?
- gRPC 서버에 다른 언어를 사용합니까?
- gRPC 클라이언트 코드를 어디에서 호출하고 있습니까? (컨트롤러, 백그라운드 작업 등에서)
- 데이터를 보내기 위해 어떤 전략/전략을 사용하고 있습니까? (단항, 양방향, 클라이언트 스트리밍, 서버 스트리밍)