Ruby 에 대한 뉴렐릭을 사용하면 Rails, Roda 또는 Sinatra 기능 내의 특정 요청에 대해 선택적으로 기능을 비활성화할 수 있습니다.
모든 계측 차단
Rails 컨트롤러, Roda 애플리케이션 또는 Sinatra 애플리케이션 내에서 인수 없이 newrelic_ignore
호출하여 해당 컨트롤러나 애플리케이션에서 처리하는 모든 요청의 계측을 방지합니다.
newrelic_ignore
newrelic_ignore
을 사용하면 에이전트가 대상 트랜잭션에 대한 성능 데이터(측정항목, 트랜잭션 추적, 이벤트, 추적된 오류 등)를 기록하지 못하게 하고 트랜잭션이 전체 Apdex 점수에 기여하는 것도 방지합니다.
Rails로 특정 작업 무시하기
Rails 컨트롤러에서 특정 작업만 무시하려면 newrelic_ignore
와 함께 { :only
또는 :except
옵션을 사용할 수 있습니다.
예를 들어 컨트롤러에서 index
및 show
작업만 무시하려면 다음을 사용합니다.
newrelic_ignore :only => [:index, :show]
컨트롤러 except index
의 모든 작업을 무시하려면 다음을 수행합니다.
newrelic_ignore :except => [:index]
Roda를 사용하여 특정 경로 무시
Roda 애플리케이션의 route
블록 외부에서 Roda 스타일 경로를 newrelic_ignore
에 전달하여 Roda 애플리케이션의 특정 경로를 무시합니다. 자세한 내용은 Roda: 경로 무시를 참조하세요.
Sinatra로 특정 경로 무시하기
Sinatra 애플리케이션 내의 특정 경로만 무시하려면 Sinatra 애플리케이션 내에서 Sinatra 스타일 경로 정의를 newrelic_ignore
에 전달할 수 있습니다. 자세한 내용은 Sinatra: 경로 무시 를 참조하십시오.
Apdex 기여 무시
컨트롤러의 모든 작업이 Apdex 점수에 기여하는 것을 방지하지만 여전히 다른 성능 데이터를 원하는 경우 newrelic_ignore_apdex
을 사용합니다.
newrelic_ignore_apdex
Rails 애플리케이션에서 newrelic_ignore_apdex
newrelic_ignore
과 동일한 :only
및 :except
옵션을 지원합니다. Roda 또는 Sinatra 애플리케이션에서는 특정 트랜잭션을 대상으로 하는 동일한 Roda 스타일 경로 또는 Sinatra 스타일 경로를 허용합니다.
브라우저 계측 차단
newrelic_ignore_enduser
사용하면 에이전트가 데이터를 캡처하는 데 사용되는 자바스크립트를 자동으로 삽입하지 못하게 됩니다. 서버측 계측은 영향을 받지 않습니다.
컨트롤러의 모든 작업에 대한 브라우저 에이전트 삽입을 방지하려면 컨트롤러 클래스에 다음과 같은 호출을 추가합니다.
newrelic_ignore_enduser
Rails 애플리케이션에서 newrelic_ignore_enduser
newrelic_ignore
과 동일한 :only
및 :except
옵션을 지원합니다. Roda 또는 Sinatra 애플리케이션에서는 특정 트랜잭션을 대상으로 하는 동일한 Roda 스타일 경로 또는 Sinatra 스타일 경로를 허용합니다.
동적으로 트랜잭션 무시
어떤 경우에는 요청하는 동안 런타임에만 알려진 기준에 따라 특정 트랜잭션을 무시하기로 결정할 수 있습니다. 이와 같은 시나리오의 경우 위에서 설명한 선언적 메커니즘은 적합하지 않습니다. Ruby 에이전트 버전 3.9.2부터 트랜잭션 내 어느 지점에서나 다음 API 호출 패밀리를 대신 사용할 수 있습니다.
NewRelic::Agent.ignore_transactionNewRelic::Agent.ignore_apdexNewRelic::Agent.ignore_enduser
이러한 메서드는 newrelic_ignore
, newrelic_ignore_apdex
및 newrelic_ignore_enduser
호출과 유사한 결과를 갖지만 클래스 정의 대신 요청 중에 호출할 수 있습니다.
구성이 있는 URL로 트랜잭션 무시
rules.ignore_url_regexes
구성 설정을 사용하여 URL별 트랜잭션을 무시할 수 있습니다.
rules: ignore_url_regexes: ["secret", "^/admin"]
이 구성은 설정된 패턴과 일치하는 트랜잭션 이벤트 만 보고하는 것을 방지합니다. 추적 데이터와 같은 모든 데이터가 트랜잭션에서 보고되지 않도록 하려면 newrelic_ignore*
메서드 계열을 사용합니다.
정규식은 기본적으로 고정 유형을 포함하지 않습니다. /secret/ regex는 'newrelic.com/secret/login'과 일치하고 'newrelic.com/users/secretpanda'와도 일치합니다. 고정된 관리 정규식은 'newrelic.com/admin/praetorians'와 일치하지만 'newrelic.com/users/totally-real-admin'과 일치하지 않습니다.
필요한 경우 쉼표로 구분된 문자열에 정규식 목록을 제공하여 환경 변수로 정규식 무시를 설정할 수도 있습니다.
$NEW_RELIC_RULES_IGNORE_URL_REGEXES="secret,^/admin"
항상 환경 변수의 구성은 newrelic.yml의 구성을 재정의합니다.
문제점 해결
newrelic_ignore*
메서드 계열은 Rails 컨트롤러 클래스 내, Roda 애플리케이션의 route
블록 외부( Roda
의 서브클래스) 또는 Sinatra 애플리케이션( Sinatra::Base
의 서브클래스) 내에서만 작동합니다. 다른 애플리케이션은 무시하려는 각 요청 내에서 NewRelic::Agent.ignore_*
호출 계열을 사용해야 하며 이는 모든 컨텍스트에서 작동합니다.
Rails 컨트롤러, Roda 애플리케이션 또는 Sinatra 애플리케이션 내에서 newrelic_ignore
사용하려고 할 때 NoMethodError
발생하는 경우 클래스 정의 내에서 newrelic_ignore
호출을 시도하기 전에 newrelic_rpm
가 필요한지 확인하세요.