• /
  • ログイン
  • 無料アカウント

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

メタルコントローラの計測器

デフォルトでは、New Relic の Ruby エージェントは ActionController::Metal コントローラーをインストルメントしません。これは、Metal コントローラーは、有効な Rack アプリケーションを提供するために必要な最低限のインターフェースのみを提供するという理念に基づいています。必要に応じてMetalコントローラを装飾するのは、基本的に皆さんの自由です。このドキュメントでは、これらのコントローラアクションを APM Transactions page and overviews alongside those inherit from ApplicationController for Rails 3 apps or higher に表示する方法を説明します。

Rails 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
end

Rails 3.0~3.2

方法1

以下のメソッドは、ベースコントローラと同様に、すべてのMetalコントローラのアクションを自動的にインストルメントします。

NewRelic::Agent::Instrumentation::ControllerInstrumentationNewRelic::Agent::Instrumentation::Rails3::ActionController を、Metal Controllerクラスの下部に含めます。

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::ActionController
end

方法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 :show
end

方法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 :show
end

Rails 2.3

Rails::Rack::Metal クラスをRails 2から使用している場合、以下のようにしてMetalへの呼び出しをインストゥルメント化することができます。

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
end
end
問題を作成する
Copyright © 2022 New Relic Inc.