In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.
이 문서에서는 Ruby 에이전트로 타사 gem을 계측하는 방법과 에이전트와 상호 작용하기 위한 몇 가지 모범 사례에 대해 자세히 설명합니다. 이것은 Ruby 에이전트가 기본적으로 계측하지 않는 gem을 사용하거나 라이브러리에 계측을 추가하려는 gem 작성자에게 유용합니다.
타사 확장 찾기
누구나 Ruby 에이전트 위에 빌드되는 gem을 작성할 수 있습니다. New Relic은 이러한 확장을 추적하고 Ruby 에이전트를 빌드하는 다른 gem에 대한 링크를 제공하기 위해 extends_newrelic_rpm 이라는 저장소를 유지 관리합니다.
이러한 확장은 New Relic에서 지원 되지 않습니다 . New Relic은 이러한 링크를 고객에 대한 서비스로 수집합니다. 이러한 gem과 관련된 문제는 GitHub의 해당 프로젝트에 보고해야 합니다.
보석으로서의 확장
New Relic은 계측 라이브러리당 하나의 gem으로 타사 확장을 gem으로 유지하도록 권장합니다. 예를 들어, newrelic-redis 은 redis gem에 대한 계측을 제공합니다.
거래 시작
라이브러리가 New Relic에서 전체 트랜잭션으로 표시되어야 하는 코드를 제공하는 경우(예: Ruby 에이전트에 의해 계측되지 않는 웹 요청 또는 백그라운드 작업) 트랜잭션을 시작하기 위해 이러한 메커니즘 중 하나를 사용하십시오.
트랜잭션을 시작하는 가장 간단한 방법은 메서드에서 add_transaction_tracer 를 호출하는 것입니다. 이것은 NewRelic::Agent::Instrumentation::ControllerInstrumentation 이(가) 클래스에 포함되어 있다고 가정합니다.
classCustomBackgroundJob
include NewRelic::Agent::Instrumentation::ControllerInstrumentation
deftransaction
# execute a transaction
end
add_transaction_tracer :transaction
end
때때로 New Relic이 생성하는 트랜잭션을 약간 더 제어해야 합니다. 이 경우 perform_action_with_newrelic_trace 을 사용할 수 있습니다. 재정의할 수 있는 일부 매개변수에는 트랜잭션 이름 및 범주(웹 트랜잭션이든 백그라운드 트랜잭션이든)가 포함됩니다.
classCustomBackgroundJob
include NewRelic::Agent::Instrumentation::ControllerInstrumentation