기본적으로 뉴렐릭 루비 에이전트는 리소스화 ActionController::Metal
컨트롤러를 사용하지 않습니다. 이는 Metal 컨트롤러가 유효한 Rack 앱을 제공하는 데 필요한 최소한의 인터페이스만 제공한다는 철학과 일치합니다. 필요에 따라 금속 컨트롤러를 장식하는 것은 일반적으로 사용자에게 달려 있습니다. 이 문서에서는 이러한 컨트롤러 작업을 APM Transactions 페이지 에 표시하는 방법과 Rails 3 앱 이상에 대해 ApplicationController
에서 상속된 작업과 함께 개요를 설명합니다.
레일즈 4.0 이상
Rails 4.0부터 New Relic의 컨트롤러 계측은 ActiveSupport::Notifications
을 사용합니다. ActionController::Instrumentation
모듈을 포함하면 컨트롤러 이벤트가 Metal 컨트롤러에서 시작됩니다. 이를 통해 New Relic은 이러한 작업을 계측할 수 있습니다.
class PlatinumController < ActionController::Metal include ActionController::Rendering
def show render :text => "Here is some text" end
# Ensure ActiveSupport::Notifications events are fired include ActionController::Instrumentation
# Uncomment the following line to include New Relic helper methods, such as newrelic_ignore or add_method_tracer # include NewRelic::Agent::Instrumentation::ControllerInstrumentationend
레일 3.0 - 3.2
방법 1
다음 방법은 기본 컨트롤러와 마찬가지로 모든 금속 컨트롤러 동작을 자동 계측합니다.
Metal Controller 클래스의 맨 아래에 NewRelic::Agent::Instrumentation::ControllerInstrumentation
및 NewRelic::Agent::Instrumentation::Rails3::ActionController
을 포함합니다.
class SteelController < ActionController::Metal include ActionController::Rendering
def show render :text => "Here is some text" end
include NewRelic::Agent::Instrumentation::ControllerInstrumentation include NewRelic::Agent::Instrumentation::Rails3::ActionControllerend
방법 2
다음 예에서는 Metal 컨트롤러의 특정 작업 방법만 추적하도록 선택할 수 있습니다.
각 메서드 계측에 대해 NewRelic::Agent::Instrumentation::ControllerInstrumentation
을 포함하고 add_transaction_tracer
을 호출합니다.
class SteelController < ActionController::Metal include ActionController::Rendering include NewRelic::Agent::Instrumentation::ControllerInstrumentation
def show render :text => "Here is some text" end add_transaction_tracer :showend
방법 3
마지막 예제는 Metal Controller 클래스뿐만 아니라 모든 클래스에서 작동하는 메서드의 추적을 추가하는 보다 일반적인 방법입니다.
각 메서드 계측에 대해 NewRelic::Agent::MethodTracer
을 포함하고 add_method_tracer
을 호출합니다.
class SteelController < ActionController::Metal include ActionController::Rendering include NewRelic::Agent::MethodTracer
def show render :text => "Here is some text" end add_method_tracer :showend
레일 2.3
Rails 2의 Rails::Rack::Metal
클래스를 사용하는 경우 다음과 같이 Metals에 대한 호출을 계측할 수 있습니다.
require 'newrelic_rpm'
class MyMetal < Rails::Rack::Metal def self.call(env) # ... your metal code ... end
class << self include NewRelic::Agent::Instrumentation::ControllerInstrumentation add_transaction_tracer :call endend