ヘルプ 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. エージェントがインストールされていない場合や、エージェントのサービスが停止している場合は、メソッド実行は何の効果も発揮しません。

    トップ