ブラウザ エージェントの拡張

ブラウザ エージェントは拡張可能です。
apmdevops102jp
ブラウザ エージェントは拡張可能です。
ブラウザ エージェントの拡張
JavaScript フレームワーク、トランザクション追跡プロパティのカスタム測定ができるように、また apmbrowseragentextensibility.js ファイルにカスタムの JavaScript を追加することで名前のフォーマットができるようにブラウザのエージェントを拡張することができます。ファイルで各 JavaScript 拡張ポイントはプレースホルダの JavaScript 関数でマークされます。このプレースホルダにより、独自の JavaScript コードを追加できます。ブラウザ エージェントでは、以下の拡張ポイントをサポートしています。
  • 現在のブラウザ ウィンドウのスコープ内への JavaScript 関数のブラウザのエージェントのインスツルメンテーション
  • Web ページ(たとえば、Navigation Timing API)用のカスタム メトリックの追加
  • JavaScript 関数用のカスタム メトリックの追加
  • AJAX 用のカスタム メトリックの追加
  • その他のメトリック(JavaScript 関数、AJAX、または web ページに関連しない)の追加
  • ブラウザ エージェントのトランザクション追跡コンポーネントへのトランザクション追跡プロパティの挿入
  • メトリックの名前付けおよび構造の変更
アプリケーションをインスツルメントする JavaScript 関数の追加
アプリケーション コードをインスツルメントする JavaScript 関数を追加することができます。
以下の手順に従います。
  1. <
    Agent_Home
    >/examples/APM/browseragent/js ディレクトリに移動し、テキスト エディタで、apmbrowseragentextensibility.js ファイルを開きます。
  2. ファイルで、
    extFuncMap
    拡張ポイントに移動します。
  3. 形式にインスツルメントされる JavaScript 関数の名前を追加します。
    “key” : { name : “Name of the JavaScript function to instrument” }
    「key」は一意の識別子にする必要があり、JavaScript 関数の下の JavaScript 関数名として、メトリック階層で表示されます。インスツルメントされる JavaScript 関数が、JavaScript オブジェクト内のメンバ関数の場合は、「プロトタイプ」キーワードを追加する必要があります。
    例:
    “Math_Random”: { name : “Math.random” }
    “Math_Random”: { name : “XMLHttpRequest.prototype.setRequestHeader” }
    ブラウザ エージェントは、
    setTimeout()
    setInterval()
    のようなタイミング イベント メソッドによって直接呼び出される関数について JavaScript 関数メトリックをサポートしていません。目的の関数を呼び出す、匿名の関数を使用することをお勧めします。
    例:
    以下のように、目的の関数を
    setTimeout()
    で直接呼び出すのではなく、
    function interestedFunc () {};
    setTimeout(interestedFunc, 5000);
    目的の関数を呼び出すために、以下のように匿名の関数を使用します。
    function interestedFunc () {};
    setTimeout(function(){interestedFunc();}, 5000);
  4. ファイルを保存して閉じます。
  5. エージェントを再起動します。
Web ページ用のカスタム メトリックの追加
Web ページ用のカスタム メトリックを追加することができます。
以下の手順に従います。
  1. <
    Agent_Home
    >/examples/APM/browseragent/js ディレクトリに移動し、テキスト エディタで、apmbrowseragentextensibility.js ファイルを開きます。
  2. ファイルで、
    extAddCustomPageMetric
    拡張ポイントに移動します。
  3. カスタム JavaScript コードを持つメトリックを収集する作業を実行します。
    注:
    事前に以下のようにマークされたファイルのセクション以外には、すべてのカスタム JavaScript コードを配置することをお勧めします。
            /**
             * ADD YOUR OWN CODE HERE
             */
  4. extCustomPageMetricMap
    に、収集されたメトリックを保存します。
    extCustomPageMetricMap
    は、キーがメトリック名で、値が 2 つの項目の配列である JavaScript の HashMap です。これらの項目は、メトリック値およびメトリック アグリゲータ タイプです。
    例:
    extCustomPageMetricMap["Average Used JS Heap (Bytes)"] = [32000000, BrowserAgentGlobals.metricAggregatorType.INT_LONG_DURATION] 
    メトリック アグリゲータ タイプは、Introscope エージェントがそのメトリック間隔でデータ ポイントのセットをどのように集約するかを指定します。デフォルトで、ブラウザ エージェントは、以下のアグリゲータ タイプを使用できます。
    • BrowserAgentGlobals.metricAggregatorType.LONG_INTERVAL_COUNTER
      これらのメトリックは、間隔ごとに値を合計することによって、一定期間で集約されます。
    • BrowserAgentGlobals.metricAggregatorType.INT_LONG_DURATION
      これらのメトリックは、間隔ごとに、値の平均値を利用することによって一定期間で集約されます。
  5. ファイルを保存して閉じます。
  6. エージェントを再起動します。
AJAX 用のカスタム メトリックの追加
AJAX 用のカスタム メトリックを追加できます。
以下の手順に従います。
  1. <
    Agent_Home
    >/examples/APM/browseragent/js ディレクトリに移動し、テキスト エディタで、apmbrowseragentextensibility.js ファイルを開きます。
  2. ファイルで、
    extAddCustomAjaxMetric
    拡張ポイントに移動します。
  3. カスタム JavaScript コードを持つメトリックを収集する作業を実行します。
    注:
    事前に以下のようにマークされたファイルのセクション以外には、すべてのカスタム JavaScript コードを配置することをお勧めします。
            /**
             * ADD YOUR OWN CODE HERE
             */
  4. extAddCustomAjaxMetricMap
    に、収集されたメトリックを保存します。
    extAddCustomAjaxMetricMap
    は、キーがメトリック名で、値が 2 つの項目の配列である JavaScript の HashMap です。これらの項目は、メトリック値およびメトリック アグリゲータ タイプです。
    例:
    extCustomAjaxMetricMap["Resource Size (KB)"] = [426, BrowserAgentGlobals.metricAggregatorType.INT_LONG_DURATION] 
    メトリック アグリゲータ タイプは、Introscope エージェントがそのメトリック間隔でデータ ポイントのセットをどのように集約するかを指定します。デフォルトで、ブラウザ エージェントは、以下のアグリゲータ タイプを使用できます。
    • BrowserAgentGlobals.metricAggregatorType.LONG_INTERVAL_COUNTER
      これらのメトリックは、間隔ごとに値を合計することによって、一定期間で集約されます。
    • BrowserAgentGlobals.metricAggregatorType.INT_LONG_DURATION
      これらのメトリックは、間隔ごとに、値の平均値を利用することによって一定期間で集約されます。
  5. ファイルを保存して閉じます。
  6. エージェントを再起動します。
JavaScript 関数用のカスタム メトリックの追加
JavaScript 関数用のカスタム メトリックを追加できます。
以下の手順に従います。
  1. <
    Agent_Home
    >/examples/APM/browseragent/js ディレクトリに移動し、テキスト エディタで、apmbrowseragentextensibility.js ファイルを開きます。
  2. ファイルで、
    extAddCustomJSFuncMetric
    拡張ポイントに移動します。
  3. カスタム JavaScript コードを持つメトリックを収集する作業を実行します。
    注:
    事前に以下のようにマークされたファイルのセクション以外には、すべてのカスタム JavaScript コードを配置することをお勧めします。
            /**
             * ADD YOUR OWN CODE HERE
             */
  4. extCustomJSFuncMetricMap に、収集されたメトリックを保存します。
    extCustomJSFuncMetricMap は、キーがメトリック名で、値が 2 つの項目の配列である JavaScript の HashMap です。これらの項目は、メトリック値およびメトリック アグリゲータ タイプです。
    例:
    extCustomJSFuncMetricMap["Arguments Count"] = [37, BrowserAgentGlobals.metricAggregatorType.LONG_INTERVAL_COUNTER] 
    メトリック アグリゲータ タイプは、Introscope エージェントがそのメトリック間隔でデータ ポイントのセットをどのように集約するかを指定します。デフォルトで、ブラウザ エージェントは、以下のアグリゲータ タイプを使用できます。
    • BrowserAgentGlobals.metricAggregatorType.LONG_INTERVAL_COUNTER
      これらのメトリックは、間隔ごとに値を合計することによって、一定期間で集約されます。
    • BrowserAgentGlobals.metricAggregatorType.INT_LONG_DURATION
      これらのメトリックは、間隔ごとに、値の平均値を利用することによって一定期間で集約されます。
  5. ファイルを保存して閉じます。
  6. エージェントを再起動します。
その他のメトリックの追加
その他のメトリックを追加することができます。
以下の手順に従います。
  1. <
    Agent_Home
    >/examples/APM/browseragent/js ディレクトリに移動し、テキスト エディタで、apmbrowseragentextensibility.js ファイルを開きます。
  2. ファイルで、
    extCollectMiscMetrics
    拡張ポイントに移動します。
  3. カスタム JavaScript コードを持つメトリックを収集する作業を実行します。
    注:
    事前に以下のようにマークされたファイルのセクション以外には、すべてのカスタム JavaScript コードを配置することをお勧めします。
            /**
             * ADD YOUR OWN CODE HERE
             */
  4. ブラウザ エージェント API に、収集されたメトリックを保存します。
    BrowserAgentUtils.metricUtils.addDataPoint(BrowserAgentGlobals.metricTypeToAccumulatorMap[BrowserAgentGlobals.metricType.MISC], ‘metric Name’, metric value)
  5. ファイルで、
    extAddCustomMiscMetric
    拡張ポイントに移動します。
  6. 収集されたメトリックを
    extCustomMiscMetricMap
    に入力します。
    extAddCustomMiscMetricMap
    は、キーがメトリック名で、値が 2 つの項目の配列である JavaScript の HashMap です。これらの項目は、メトリック値およびメトリック アグリゲータ タイプです。
    例:
    extCustomMiscMetricMap["Angular Watch Count"] = [37, BrowserAgentGlobals.metricAggregatorType.INT_LONG_DURATION] 
    メトリック アグリゲータ タイプは、Introscope エージェントがそのメトリック間隔でデータ ポイントのセットをどのように集約するかを指定します。デフォルトで、ブラウザ エージェントは、以下のアグリゲータ タイプを使用できます。
    • BrowserAgentGlobals.metricAggregatorType.LONG_INTERVAL_COUNTER
      これらのメトリックは、間隔ごとに値を合計することによって、一定期間で集約されます。
    • BrowserAgentGlobals.metricAggregatorType.INT_LONG_DURATION
      これらのメトリックは、間隔ごとに、値の平均値を利用することによって一定期間で集約されます。
  7. 手順 4 から
    BrowserAgentGlobals.metricTypeToAccumulatorMap[BrowserAgentGlobals.metricType.MISC]
    に保存されているデータ ポイントを削除します。
    例:
    BrowserAgentGlobals.metricTypeToAccumulatorMap[BrowserAgentGlobals.metricType.MISC] = {};
  8. ファイルを保存して閉じます。
  9. エージェントを再起動します。
トランザクション追跡プロパティの挿入
ブラウザ エージェントのトランザクション追跡コンポーネントにトランザクション追跡プロパティを挿入できます。
以下の手順に従います。
  1. <
    Agent_Home
    >/examples/APM/browseragent/js ディレクトリに移動し、テキスト エディタで、apmbrowseragentextensibility.js ファイルを開きます。
  2. ファイルで、
    extAddCustomOptionalProperty
    拡張ポイントに移動します。
  3. トランザクション追跡のプロパティ名と値を
    extCustomOptionalProperty
    に次の形式で追加します。
    “propertyName1=value1;propertyName2=value2”
    例:
    “shoppingCartValue=534.79;itemCount=4;paymentType:CC”
    “timeSpent=21.5;client=Chrome 43.0.2357.130 m”
  4. ファイルを保存して閉じます。
  5. エージェントを再起動します。
メトリックの名前付けおよび構造の変更
メトリックの名前付けおよび構造を変更することができます。
以下の手順に従います。
  1. <
    Agent_Home
    >/examples/APM/browseragent/js ディレクトリに移動し、テキスト エディタで、apmbrowseragentextensibility.js ファイルを開きます。
  2. ファイルで、
    extNameFormatter
    拡張ポイントに移動します。
  3. 現在のメトリック パスおよび構造を拡張ポイントへの引数としてを指定し、必要に応じて、パスと構造を変更します。
  4. 変更されたメトリックの名前および構造を、以下のように、JavaScript 文字列として
    formattedMetricPath
    JavaScript 変数に置き換えます。
    var appCount = unformattedMetricPath.replace(/localhost\/5080|\/exampleApp:Invocation Count Per Interval/, "localhost/5080|/exampleApp:exampleApp Pop Hit Count");
    formattedMetricPath = appCount;
  5. ファイルを保存して閉じます。
  6. エージェントを再起動します。