カスタム インストルメンテーションと例外の追跡

APMインサイトRubyエージェントは、複数のアプリケーション フレームワークから、デフォルトのメソッドやクラスを特定する能力があります。エージェントは特定したメソッドと追加メトリックを自動的に追加しますが、ケースによっては、これらメソッドによるパフォーマンス データだけでは、デバッグに不十分な場合もあります。トラブルシュートにアプリケーション固有の追加情報が必要な場合は、当社APIを利用して、メトリック収集を実行できます。

追加メソッドの追跡

デフォルトでは、Rubyエージェントは、コントローラー、DBクエリ、ビューなどのフレームワーク クラスのみを捕捉します。その他のアプリケーション固有メソッドを監視するには、カスタム インストルメンテーションの利用が可能です。

はじめに、下記のとおりインストルメントするメソッドをアプリケーションのイニシャライザーに指定してください。続いて、config/initializers/instrumentation.rbファイルを作成します。

これによって、アプリケーションのトラブルシュートとデバッグがディープに可能です。

構文:

require 'agent/api/custom_tracker'
MyClass.class_eval do
include ::APMInsight::API::CustomTracker
    track_method :my_method1
    track_method :my_method2
end

例:

require 'agent/api/custom_tracker'
ProjectsController.class_eval do
include ::APMInsight::API::CustomTracker
    track_method :get_internal
end

APIでの例外の追跡

APMインサイトRubyエージェントは、既知のフレームワーク メソッドで発生した例外を捕捉できます。エージェントは、ユーザー定義の例外がアプリケーションで発生しても、追跡できません。この場合、エージェントから例外データを取得し、Applications Managerサーバーへ送信するには、エージェントAPIで対応できます。

はじめに、必要なアプリケーションにAPIを追加します。アプリ サーバーが起動すると、エージェントは例外発生時に捕捉を行い、その時点でのトランザクションと自動的に関連付けて、例外情報をApplications Managerに送信します。これによって、あらゆる例外の追跡が、1箇所から可能となります。

構文:

require 'agent/api/custom_tracker'

例:

require 'agent/api/custom_tracker'
    ... # その他の宣言と定義
def find_value
begin
    ... # 命令
    rescue => ex
        APMInsight::API::CustomTracker.trackException(ex)
        ... # デバッグ操作
    end
end