ほとんどすべてのWebベースのフレームワークまたはプラットフォームで、ユーザーリクエストにはURIベースのビジネストランザクションエントリポイントがあります。AppDynamics アプリケーション エージェントは、次の URI ベースのエントリポイントを自動的に検出します。

  • Javaエージェント:Servletエントリポイント
  • .NETエージェント:ASP.NETエントリポイント
  • Node.jsエージェント:Node.js Webエントリポイント
  • Pythonエージェント:Python Webエントリポイント

Webサーバーエージェントは、Webリクエストエントリポイントを検出できますが、自動検出はデフォルトでオフになっているため、ダウンストリームノード上のエージェントはトランザクションを命名できます。

URI ベースのすべてのエントリポイントには、自動トランザクション検出ルールとカスタムマッチルールに類似した構成オプションがあります。

Servlet に適用される追加機能については、「サーブレットエントリポイント」を参照してください。

デフォルト命名

デフォルトでは、アプリケーション エージェントが URI リクエストを検出すると、URI の最初の 2 つのセグメントを使用してビジネストランザクションが命名されます。たとえば、オンラインストアの購入操作の URI(http://acmeonline.com/store/checkout)があります。

エージェントは、ビジネストランザクションに「/store/checkout」と命名し、そのURIに一致するすべてのリクエストを「store/checkout」ビジネストランザクションに割り当てます。

URI の最初の 2 つのセグメントに、環境内でビジネストランザクションを効果的に識別するための十分な情報が含まれていない場合、URI とそのコンテキストに基づいてトランザクションを命名するように自動検出ルールを編集できます。または、名前を指定するカスタムマッチルールを作成します。

フルフレームワーク上の ASP.NET Core の場合、デフォルトの命名規則では、コントローラ、アクション、およびエリアを使用します。その他の情報や構成オプションについては、「領域、コントローラおよびアクションによるMVCトランザクションの命名」を参照してください。

自動命名ルールのカスタマイズ

URIベースのエントリポイントに対して新しいデフォルトの自動検出ルールを編集または作成する場合、命名を次のように調整できます。

  • 完全なURIを使用してトランザクションを命名します。
  • URIの一部を使用して動的にトランザクションを命名します。

[Rule Configuration] タブで [Configure Naming] オプションを展開して、構成オプションを表示します。

ルールを [Use the full URI] に構成すると、エージェントは完全なリクエスト URI でビジネストランザクションを命名します。動的な命名オプションはありません。たとえば、URI が http://acmeonline.com/store/coats/men の場合、エージェントはトランザクションの名前を「/store/coats/men」にします。 

Use the full URI は Grails Servlet トランザクションに最適です。多くの場合デフォルトの命名スキームでは、複数のトランザクションの区別が行われないからです。


URIの一部を使用してトランザクションを命名する場合、トランザクションの命名を構成する複数のオプションがあります。

 

URI の一部の使用

AppDynamicsでは、URIに基づいてURIベースのトランザクションを自動的に命名する以下のオプションを提供しています。

  • 最初または最後のURIセグメントを使用します。

  • 特定のURIセグメントの使用

次のURLの場合、URIの最初の2つのセグメントは、ビジネストランザクションの重要な名前にはなり得ません。

http://example.com/Web/Store/Checkout では、「Web/Store」というデフォルトのトランザクション名が生成されます。

次のオプションのいずれかを使用して、より意味のあるトランザクション名を識別できます。

  • [Use the first ] または [Use the last n] セグメントをクリックして、URI の先頭または末尾の 2 つの連続したセグメントを使用します(n はセグメント番号)。たとえば、URIの末尾2つのセグメントを使用して購入トランザクションを識別する場合、エージェントはトランザクションに「/Store/Checkout」と命名します。
  • 連続していないセグメントを使用するなど、より柔軟に命名を構成する場合は、[Name Transactions dynamically using part of the request] をクリックします。[Use URI segments in Transaction names] オプションを選択します。複数のセグメントを指定するには、セグメント番号のカンマ区切りリストを入力します。

    たとえば、次の URL は ID 1234 の顧客が要求した購入トランザクションを表します。http://example.com/Store/cust1234/Checkout
    購入トランザクションは顧客に関係なく同じであるため、URI の 1 番目と 3 番目のセグメントに基づいてトランザクションを命名します。AppDynamics はこのトランザクションに「StoreCheckout」と命名します。
    Configure Naming

ヘッダー、クッキー、およびHTTPリクエストの他の部分の使用

[Name Transactions dynamically using part of the request] オプションを使用すると、HTTP リクエストの特定の部分を使用して URI ベースのトランザクションを識別するように選択できます。必ずしもすべてのエージェントで次の命名オプションがすべて使用できるわけではないことに注意してください。

  • トランザクション名で HTTP パラメータ値を使用するには、[Use a parameter value in Transaction names]  を選択して[Parameter Name] を入力します
    たとえば、http://example.com/Store/Inventory?category=electronics
    Parameter Name
    という URL があるとします。AppDynamics はトランザクションに category パラメータ値を含めた名前 "/Store/Inventory.electronics" を付けます。
  • トランザクション名でヘッダー値を使用するには、[Use header value in Transaction names] を選択して、[ Header Name. 
    ] を入力します。たとえば、カスタムヘッダー「Version」を使用するサイトの場合、AppDynamics はヘッダー値を使用してトランザクションを「/Store/Inventory.v2.5」と命名します。
  • トランザクション名に cookie 値を使用する場合は、[Use a cookie value in Transaction names] を選択して、[Cookie Name] を入力します
    たとえば、cookie 内のユーザのロイヤルティステータスを追跡する Web サイトの場合は、[Cookie Name] を「loyalty」に設定します。AppDynamics は、ロイヤルティ cookie 値でトランザクションに名前(/Store/Inventory.Status=Gold)を付けます。
  • トランザクション名にセッション属性値を使用する場合は、[Use a session attribute in Transaction names] をクリックして、[Session Attribute Key] を入力します。
    たとえば、Web サイトのセッションプロパティに顧客のリージョンが保存されるとします。セッション属性名を「region」に設定します。AppDynamics は、region セッション属性値でトランザクションに名前(/Store/Inventory.NorthAmerica)を付けます。
  • トランザクション名でリクエストメソッドを使用するには、[Use the request method (GET/POST/PUT) in Transaction names] をクリックします。
    例えば、AppDynamicsはトランザクションを「/Store/Inventory.GET」と命名します。
  • トランザクション名でリクエストホストを使用するには、[Use the request host in Transaction names] をクリックします。
    例えば、AppDynamicsは、トランザクション名「/Store/Inventory.192.0.2.0」にリクエストホストIDを含めます。
  • トランザクション名でリクエストの発信元アドレスを使用するには、[Use the request originating address in Transaction names] をクリックします
    AppDynamics は、リクエストクライアントの IP アドレスで名前(/Store/Inventory.192.0.2.10)を付けます。

カスタム式の使用

URIでカスタム式を使用して、次のように命名できます。

  • Java Servletトランザクション
  • .NET ASP.NETトランザクション

[Name Transactions dynamically using part of the request ]、[Use a custom expression in Transaction names] の順に選択します。カスタム式 getter チェーンを次のように入力します。

Java の場合、getter チェーンを使用して、HTTPServletRequest オブジェクトから値にアクセスできます。たとえば、認証されたユーザと HttpServletRequest の値を組み合わせて使用するとします。

${getParameter(myParam)}-${getUserPrincipal().getName()}

同等のコード式は、以下のように評価されます。

request.getParameter("myParam")+"-"+request.getUserPrincipal()

HTTPServletRequest でカスタム式を作成して、Servlet ベースのすべてのリクエストを識別(トランザクション命名レベルでグローバル検出を修正)したり、特定のリクエストセット(カスタムルール)を識別できます。

Servletトランザクションのカスタム式には、リクエスト属性に以下のgetterメソッドを組み合わせて使用できます。

リクエスト属性のgetter

トランザクションの識別

getAuthType()

安全な(または安全ではない)コミュニケーションを監視するにはこのオプションを使用。

getContextPath()

URIの一部に基づくユーザーリクエストを識別。

getHeader()

リクエストヘッダーに基づくリクエストを識別。

getMethod()

特定のメソッドにより呼び出されるユーザーリクエストを識別。

getPathInfo()

URLと関連づけられた追加のパス情報に基づくリクエストを識別(リクエスト作成時にクライアントにより送信)。

getQueryString()

パスの後にくるリクエストURLに含まれるクエリ文字列に基づきリクエストを識別。

getRemoteUser()

リクエストしたユーザーのログインに基づきユーザーリクエストを識別。

getRequestedSessionId()

クライアント指定のセッションIDに基づきユーザーリクエストを識別。

getUserPrincipal()

現在の認証済ユーザーを基準にユーザーリクエストを識別。


.NET の場合、
getter チェーンを使用して、フルフレーム上の ASP.NET の HttpRequest オブジェクトや ASP.NET Core の Microsoft.AspNetCore.Http.Internal.DefaultHttpRequest のプロパティおよびメソッドにアクセスできます。

  • 括弧 ${} で getter チェーンを囲む。カスタム式では複数の getter チェーンを使用できる。
  • getter チェーン構文を使用する。
  • 任意の HttpRequest リクエスト属性またはメソッドを使用する。

たとえば、http://mystore.example.com/Store/Inventory-Furniture という URL の場合、次のカスタム式は、2 つの getter チェーンを使用して、HTTPRequest オブジェクトのプロパティにアクセスします。

 ${Url.ToString().Split(Char[]/-).[2]}-${UserAgent}
  • 1つ目のgetterチェーンはURLを取り出してダッシュ("-")で分割し、その列の2つ目の文字列を使用する。
  • 2 つ目の getter チェーンが HttpRequest.UserAgent プロパティを取り出す。
  • ダッシュ「-」が 2 つの getter チェーンを分割します。 

結果は次のビジネストランザクション名になります。

Geckoに似たFurniture-Mozilla/5.0(Windows NT 6.3; Trident/7.0; rv:11.0)