APMインサイトのRubyエージェントは既存のメソッドや複数のアプリケーションフレームワークからのクラスを特定できます。エージェントによる自動的な追跡はメソッドに加えてメトリクスまでも特定しますが、このような場合、これらメソッドのパフォーマンスデータでは問題のデバッグに十分ではないかもしれません。この問題の解決にアプリケーション固有の追加情報が必要な場合は、APIを用いてアプリケーション固有のメトリクスを収集します。
追加メソッドの追跡:
デフォルトで、Rubyエージェントはコントローラー、データベースクエリー、ビューのようなフレームワーククラスのみをキャプチャーします。カスタムインストルメンテーションを用いることでそのたアプリケーション固有のメソッドを監視することができます。
これを始めるには、次のようなアプリケーションイニシャライザーで、追加したいメソッドを入力します。その後、config/initializers/配下にs247_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
結果:
APM > アプリケーション/インスタンス > Webトランザクション > 追跡
APIを用いた例外の追跡
Rubyエージェントはフレームワークメソッドに起こった例外をキャプチャーすることができます。しかし、エージェントはアプリケーションで起こったユーザー定義の例外を追跡できません。このような場合に、エージェントAPIを用いて、例外データをSite24x7のサーバーにエージェント経由でプッシュできます。
初めに、該当するアプリケーションにAPIを追加します。アプリケーションサーバーが稼働されると、エージェントは例外が引き起こされた時のデータをキャプチャーします。それらは自動的に現在のトランザクションに関連付けられて、Site24x7のサーバーにプッシュされます。こうすることでその箇所の全ての例外を追跡することができます。
構文:
require 'agent/api/custom_tracker'
APMInsight::API::CustomTracker.trackException(exception_object)
例:
require 'agent/api/custom_tracker'
... # Other declarations and definitions
def find_value
begin
.... # some instructions
rescue => ex
APMInsight::API::CustomTracker.trackException(ex)
.... # rescue operations
end
end
結果:
APM > アプリケーション/インスタンス > Webトランザクション > 追跡