.NET エージェントの HTTP クライアントの相関と HTTP バックエンド URL パスの名前付けの設定

パス グループは、HTTP バックエンド URL パスのプレフィックスに関して定義する Web サービス HTTP クライアント要求の名前付きグループです。
apmdevops106
パス グループ
は、HTTP バックエンド URL パスのプレフィックスに関して定義する Web サービス HTTP クライアント要求の名前付きグループです。
3
2
HTTP クライアント相関
.NET エージェントのクライアントの相関は、サーバ間のページ要求で開始されます。 インスツルメントされたサーバは、別のサーバ、エージェント、またはパブリック Web サービスに対するクライアント呼び出しを行います。 そのため、技術的には、サーバは実際にはクライアントではありませんが、呼び出し中のサーバは
クライアント
と呼ばれます。 サーバは、送信要求コールを確認できるようにインスツルメントされています。 ある呼び出しがエージェントによってインスツルメントされた別のサーバに送信されると、その呼び出しを相関付けることができます。
.NET エージェントの HTTP クライアントの相関フレームワークでは、以下の 3 つの .NET ライブラリが使用されます。
  • System.Net.HttpWebRequest
  • System.Web.WebClient
  • System.Net.Http.HttpClient
HTTP バックエンド パス グループの名前付け
.NET HTTP バックエンド パス グループの一連のプロパティを設定して、.NET アプリケーションによって実行される送信 HTTP クエリのパフォーマンスを監視することができます。 HTTP バックエンド データは、Backends|WebService at {protocol}_//{host}:{port} Investigator ノード下の標準 BlamePoint メトリックとして表示されます。 これらのプロパティによって、HTTP メソッドおよびトランザクション追跡で使用されているクエリ パラメータがキャプチャされます。 HTTP 4XX または 5XX 応答コードを受信したときにエラー スナップショットを生成するように設定できます。
以下の introscopeAgent.profile HTTP バックエンド パス グループのプロパティは連携して動作します。
introscope.agent.backendpathgroup.keys=default introscope.agent.backendpathgroup.group.default.pathprefix=* introscope.agent.backendpathgroup.group.default.format={path_delimited:/:0:5}
この設定では、デフォルトの HTTP バックエンド パスは、HTTP バックエンド パス グループに表示されます。 通常、HTTP バックエンド パスは、メトリック ブラウザの
Backends|WebService at {protocol}_//{host}_{port}|Paths
ノード下に表示されます。
さまざまな URL のパスの詳細をキャプチャしてグループ化するには、エージェント プロファイルで URL パス グループを設定します。
HTTP バックエンド パス グループの使用
各パス グループのメトリックは、Investigator メトリック ブラウザ ツリーの、
Backends|WebService at <
protocol
>_//<
host
>_<
port
>|Paths
ノードの下に集約されます。 デフォルトでは、すべての HTTP バックエンド URL パスは
デフォルト
グループに割り当てられます。 パス グループを使用すると、HTTP バックエンドから呼び出されている要求の数を特定できます。 それからパフォーマンスの問題を診断できます。
以下の例では、メトリック ブラウザ ツリーに表示される可能性がある 3 つの HTTP バックエンド URL パスを示しています。
Backends|WebService at http_//host_port|Paths|alphaHTTPClientPost
Backends|WebService at http_//host_port|Paths|betaHTTPClientGet
Backends|WebService at http_//host_port|Paths|Default
この例では、3 つのパス グループがどのようにエージェント プロファイルで定義されているかを示しています。
introscope.agent.backendpathgroup.keys=alphaHTTPClientPost,betaHTTPClientGet,default
introscope.agent.backendpathgroup.group.alphaHTTPClientPost.pathprefix=/testWar/helloWorld/alphaHTTPClientPost
introscope.agent.backendpathgroup.group.alphaHTTPClientPost.format=alphaHTTPClientPost
introscope.agent.backendpathgroup.group.betaHTTPClientGet.pathprefix=/testWar/helloWorld/betaHTTPClientGet
introscope.agent.backendpathgroup.group.betaHTTPClientGet.format=betaHTTPClientGet
introscope.agent.backendpathgroup.group.default.pathprefix=*
introscope.agent.backendpathgroup.group.default.format=Default
パス グループのキーの定義
エージェント プロファイル内の
introscope.agent.backendpathgroup.keys
区切り文字は、すべてのパス グループのキーのリストを定義します。 パス グループのキーは、パス グループの属性を宣言するほかのプロパティ定義で参照されます。
introscope.agent.backendpathgroup.keys=alpha,beta,default
各エントリには、2 つのプロパティがあり、これはパスを定義して出力結果を以下のように照合します。
introscope.agent.backendpathgroup.group.[
Key
].pathprefix
introscope.agent.backendpathgroup.group.[
Key
].format
[
Key
] エントリは、指定されたプロパティの特定に使用されます。
[
Key
]
の値は、以下のように、
introscope.agent.backendpathgroup.keys
プロパティに対応します。
introscope.agent.backendpathgroup.keys=key_one,key_two,key_three
introscope.agent.backendpathgroup.group.key_one.pathprefix
introscope.agent.backendpathgroup.group.key_one.format
introscope.agent.backendpathgroup.group.key_two.pathprefix
introscope.agent.backendpathgroup.group.key_two.format
introscope.agent.backendpathgroup.group.key_three.pathprefix
introscope.agent.backendpathgroup.group.key_three.format
パスが複数のグループに分類されるようにパス グループを定義できます。 この場合、
introscope.agent.backendpathgroup.keys
プロパティ内でパス グループのキーをリストする順序が重要になります。 絞り込んだメンバシップを持つパスグループが、幅広いメンバシップを持つパスグループに先行するようにします。
各パス グループのメンバシップの定義
introscope.agent.backendpathgroup.group.default.pathprefix
プロパティは、パスのパス プレフィックスと照合するパターンを指定します。 この照合によって、パス グループ内に含める要求を定義します。
例: パス プレフィックスに対するグループ キーのマッピング
以下のプロパティ定義では、パスのパス部分が
/testWar
で始まるすべての要求を、キーが
alphaHTTPClientPost
のパス グループに割り当てています。
introscope.agent.backendpathgroup.group.alphaHTTPClientPost.pathprefix=/testWar
たとえば、以下の要求は、指定したパスのプレフィックスと一致します。
http://backend.ca.com:1234/testWar/example/post.htm
パスのプレフックス
のプロパティには、アスタリスク記号(*)をワイルド カードとして使用できます。
パス グループの名前の定義
introscope.agent.backendpathgroup.group.<key>.format
プロパティは、パス グループに対する応答時間メトリックが生成される際の名前を決定します。
通常、
introscope.agent.backendpathgroup.group.<key>.format
プロパティは、テキスト文字列をパスの名前として割り当てるために使用されます。 以下の例では、キー
alpha
を持つパス グループのメトリックが、
Alpha Group
という名前でメトリック ブラウザ ツリーに表示されます。
introscope.agent.backendpathgroup.group.alpha.format=Alpha Group
(オプション)パス グループの高度な名前付け手法
必要に応じて、パス グループ名を、プロトコルなどの要求エレメント、または要求パスのサブ文字列から派生させることができます。 このセクションでは、
introscope.agent.backendpathgroup.group.<key>.format
プロパティの高度な形式について説明します。
パス グループ名に要求パスのサブ文字列を使用
パス グループの統計情報を要求パスのパス部分のサブ文字列を反映した名前でまとめることができます。
introscope.agent.backendpathgroup.group.<key>.format
を以下のように定義します。
introscope.agent.backendpathgroup.group.
alpha
.format=
{path_substring:
m
:
n
}
ここで、「
m
」は、最初の文字のインデックスで、「
n
」は、最後の文字のインデックス +1 です。 文字列の選択は、
java.lang.String.substring()
メソッドのように機能します。 たとえば、以下の設定の場合:
introscope.agent.backendpathgroup.group.alpha.format=
{path_substring:0:3}
この URL を使用します。
http://www.buyitall.com/userid,sessionid/pageid
統計は次の下に表示されます:
/us
パスのグループ化は、URL のパス部分でのみ機能します。 前述の例では次の部分です:
/testWar/helloWorld/alphaHTTPClientPost
パス グループ名に要求パスの区切り文字列部分を使用
パス グループの統計情報を要求パスの文字区切りの部分を反映した名前でまとめるには、
introscope.agent.backendpathgroup.group.alpha.format
プロパティを以下のように定義します。
introscope.agent.backendpathgroup.group.
alpha
.format=
{path_delimited:delim_char:m:n}
delim_char
文字は、パス内のセグメントを区切ります。 値
m
は、選択する最初のセグメントのインデックスで、値
n
は、選択する最後のセグメントのインデックス +1 です。 たとえば、以下のように設定されているとします。
introscope.agent.backendpathgroup.group.
alpha
.format={path_delimited:/:2:4}
以下の形式の要求に対する統計情報を考えます。
http://www.buyitall.com/userid,sessionid/pageid
これは、メトリック ノード
/pageid
下に表示されます。
以下のルールに従います。
  • 区切り文字はセグメントとしてカウントされます。 前の例では、区切り文字はスラッシュ(/)です。
  • セグメントのカウントは 0 から始まります。
  • パスのグループ化は、URL のパス部分でのみ機能することに注意してください。 前述の例では、URL のパス部分は
    /userid,sessionid/pageid
    です。
パスの例で、スラッシュ文字で区切られたセグメントを以下に示します。
0=
/
, 1=
userid,sessionid
, 2=,
/
, 3=
pageid
必要に応じて、複数の区切り文字を指定できます。 たとえば、以下のように設定されているとします。
introscope.agent.backendpathgroup.group.
alpha
.format={path_delimited:/,:3:4}
前の例に示されている形式の要求の統計情報は、
sessionid
ノードの下に表示されます。 パスの例で、スラッシュおよびカンマで区切られたセグメントを以下に示します。
0=
/
, 1=
userid
, 2=,
,
3=
sessionid
, 4=
/
, 5=
pageid
一意のバックエンド パス URL グループ メトリックの数の制限
introscope.agent.urlgroup.backend.url.clamp
プロパティを使用して、.NET エージェントによって作成される一意のバックエンド パス グループ URL メトリックの数を制限することができます。 新しいバックエンド パス グループの数が設定値に達すると、新しいバックエンド パス グループ URL のメトリックは、メトリック ブラウザに表示されます。 それらは
Backends|WebService at {protocol}_//{host}_{port}|Paths|
Default
ノード下に表示されます。 このプロパティは、メトリックの急増を防ぐのに役立ちます。
Backends|WebService at {protocol}_//{host}_{port}|Paths
ノードから意味のあるメトリックを収集するには、展開に関連するバックエンド パス グループを設定します。
以下の手順に従います。
  1. テキスト エディタで、<Agent_Home> ディレクトリの IntroscopeAgent.profile を開きます。
  2. [URL グループ化設定]セクションに移動します。
  3. introscope.agent.urlgroup.backend.url.clamp
    プロパティを設定します。
    バックエンド パス グループ URL 数のデフォルトは、5 つです。
  4. ファイルを保存して閉じます。
    管理対象アプリケーションの再起動は必要ありません。
バックエンド パス グループの名前付け
次のようにすべてがデフォルトの introscopeAgent.profile 設定に設定されている場合、これらのバックエンド パス グループ プロパティは連携します。
introscope.agent.backendpathgroup.keys=default
introscope.agent.backendpathgroup.group.default.pathprefix=*
introscope.agent.backendpathgroup.group.default.format={path_delimited:/:0:5}
introscope.agent.urlgroup.backend.url.clamp=5
この設定では、デフォルトのバックエンド パスは、バックエンド パス グループに表示されます。 グループは、バックエンド パスの後に 2 つのセグメントが配置されて命名されます。
たとえば、通常のバックエンド パスが
Backends|WebService at {protocol}_//{host}_{port}|Paths
ノードの下に記載されているとします。 すべての .NET アプリケーション間で作成されたバックエンド パス グループの数が
introscope.agent.urlgroup.backend.url.clamp
設定に達すると、新しいバックエンド パスが
Backends|WebService at {protocol}_//{host}_{port}|Paths|
Default
ノードの下に表示されます。