ヘルプ APM APM(.NET) .NETエージェントAPIによるカスタム インストルメント

.NETエージェントAPIによるカスタム インストルメント

.NETエージェントAPIによるカスタム インストルメント

APMインサイト(.NETエージェント)APIは、Webアプリケーションにおける、ユーザー定義のメソッドを追跡するのに役立ちます。Webアプリケーションのパフォーマンスを監視するため、DLLの指定メソッドをインストルメントするのにも有用です。コードの特定箇所追跡にも、利用いただけます。

API追加の手順

  1. DotNetAgent.Api.dllライブラリへの参照を、Webアプリケーション プロジェクトに追加します。
  2. DLLはNuGetパッケージでの提供となります。
  3. APIには、CustomTrackerという名称のクラスがあり、メソッドのパフォーマンスを追跡するのに利用します。
  4. ApiParameterクラスには、CustomTrackerにパラメーターとして渡す、メソッド名、クラス名、コンポーネント名も含まれます。

CustomTrackerクラスと、そのメソッド

コンストラクター

CustomTracker(Type thisType)

  • thisType:今のクラスか基底クラスのタイプです。

例:CustomTracker dotNetAgentCustomTracker = new CustomTracker(this.GetType());

CustomTracker(Type thisType, ApiParameters apiParameters)

  • thisType:今のクラスか基底クラスのタイプです。
  • apiParameters - クラス名、メソッド名、コンポーネント名など、監視メソッドのパラメーター値。

例: var customTracker = new CustomTracker(this.GetType(), new ApiParameters() { MethodName = "GetEmployeeReport", ComponentName = "REPORT" });

メソッド

CustomTracker.StartTracker(Type thisType)

  • thisType:今のクラスか基底クラスのタイプです。
  • これは、コンストラクター自体で呼び出されるため、必要ありません。

CustomTracker.StartTracker (Type thisType, ApiParameters apiParameters)

  • このメソッドは、カスタム メソッドのメトリック収集を開始するのに用います。
  • これは、コンストラクター自体で呼び出されるため、必要ありません。

CustomTracker.StopTracker()

  • メトリック収集は、このメソッドの呼び出しで停止します。
  • finallyブロックでは、必ず、これを呼び出してください。

CustomTracker.TraceError(System.Exception ex)

  • Webトランザクションにおける例外をトラックします。
  • この静的メソッドは、catchブロックで呼び出します。
  • メソッドの最初ではCustomTrackerクラスのインスタンスを作成し、StopTracker()はメソッドの終わりに実行します。
  • {}ブロックを利用して、CustomTrackerインスタンスを作成することもできます。オブジェクト廃棄の際には自動的に、StopTracker()メソッドが呼び出されます。

CustomTrackerの利用法

例1:Usingステートメントの利用

protected void Page_Load(object sender, EventArgs e)
{
        using (var customTracker = new CustomTracker(this.GetType(), new ApiParameters() { MethodName = "GetBasicDetails", ComponentName= "DETAILS" }))
        {
                AdminBL adminBL = new AdminBL();
                if(!IsPostBack)
                {
                        ASPSite.BL.MYSQLReference.BasicDetails basicDetails = adminBL.getBasicDetails(id);
                        EmpApp.Models.BasicDetails basicDetailsModel = getBasicDetailsModel(basicDetails);
                }
        }
}

例2:StartTrackerとStopTrackerをtry・finallyブロックで利用

public ActionResult BasicDetails(int id = 0)
{
        CustomTracker customTracker = null;
        AdminBL adminBL = new AdminBL();
        try
        {
                customTracker = new CustomTracker(base.GetType(),new ApiParameters(){ MethodName = "BasicDetails", ComponentName= "DETAILS" });
                ASPSite.BL.MYSQLReference.BasicDetails basicDetails = adminBL.getBasicDetails(id);
                EmpApp.Models.BasicDetails basicDetailsModel = getBasicDetailsModel(basicDetails);
        }
        finally
        {
        customTracker.StopTracker();
        }
return View(basicDetailsModel);
}

例3:CustomTrackerのUsingステートメントで、コードをインストルメント化

public ActionResult BasicDetails(int id = 0)
{
        AdminBL adminBL = new AdminBL();
        using(CustomTracker customTracker = new CustomTracker(base.GetType(),new ApiParameters() { MethodName = "BasicDetails", ComponentName = "DETAILS" }))
                {
                // コードのインストルメント化。この関数から、FetchAllEmplpyeesとSQL呼び出しを実行
                        using(CustomTracker fetchAllEmpTracker = new CustomTracker(base.GetType(),new ApiParameters() { MethodName = "FetchAllEmployees", ComponentName = "DETAILS_DB" }))
                        {
                                var empList = FetchAllEmployees();
                        }
                                ASPSite.BL.MYSQLReference.BasicDetails basicDetails = objadmin.getBasicDetails(id);
                                EmpApp.Models.BasicDetails basic = getBasicDetailsModel(basicDetails);
                }
        return View(basicDetailsModel);

例4:TraceErrorで例外をトレース

public ActionResult BasicDetails(int id = 0)
{
        try
        {
                AdminBL adminBL = new AdminBL();
                var empList = FetchAllEmployees();
                ASPSite.BL.MYSQLReference.BasicDetails basicDetails = objadmin.getBasicDetails(id);
                EmpApp.Models.BasicDetails basic = getBasicDetailsModel(basicDetails);
        }
        catch (Exception ex)
        {
                // 当該トランザクションの例外をトレース
                DotNetAgent.Api.CustomTracker.TraceError(ex);
        }

  1. メソッド名やクラス名をCustomTrackerに与えない場合、現在のメソッド名やクラス名自体を取得しようとします。
  2. StartTracker() メソッドは、デフォルトで、コンストラクター内で呼び出されます。
  3. エージェントがインストールされていない場合や、エージェントのサービスが停止している場合は、メソッド実行は何の効果も発揮しません。