正規表現は、AppDynamics 構成のさまざまな場所に表示されます。これらの場所には、たとえば、トランザクション検出ルール、データコレクタ、EUM インジェクション設定、正常性ルールなどが含まれます。このページでは、AppDynamics での正規表現の使用方法について説明します。 

一致のガイドライン

一致条件は、照合する名前付きプロパティ(メソッド名、Servlet 名、URI、パラメータ、ホスト名など)、比較演算子、および照合する値で構成されます。複雑な一致条件の場合は、正規表現(regex)を使用できます。 

一致ルールでは、大文字と小文字は区別されます。また、照合はサブシーケンスのパターンマッチングに基づきます。完全な文字列を一致させる場合は、文字列の先頭を一致させるための「^」と文字列の終端を一致させるための「$」を正規表現に含める必要があります。 

ビジネス トランザクション マッチングのコンテキストでは、パターンに URL のプロトコル(「http://」など)、ホスト、ポート、クエリパラメータは含まれません。このため、たとえば http://www.mysite.com:8000/account/settings.html?action=update という URI は、「/account/settings.html」のみでビジネストランザクション正規表現と照合されます。

正規表現エンジン

Java エージェントは、正規表現用の Java ライブラリを使用します。以下を参照してください。

 .NET Agentは、あらかじめ用意されている .NET 正規表現エンジンを使用します。以下を参照してください。

The Node.js Agent は、JavaScript 正規表現を使用します。以下を参照してください。

 PHP Agentは、PHP のあらかじめ用意されている PCRE 正規表現エンジンを使用し、区切り文字(例:/^Foo/)を含む同じ構文を必要とします。以下を参照してください。

 Python Agent は、Python の正規表現構文を使用します。以下を参照してください。

ウェブサーバエージェントは、Perl正規表現構文を使用します。以下を参照してください。

正規表現の例

以下の例は、正規表現を作成してさまざまな結果を得る方法を示しています。 

非隣接 URL セグメントの一致

AppDynamics 構成の正規表現は、要求された URI に式が一致するビジネス トランザクション カスタム マッチ ルールに対して一般的に使用します。このコンテキストでは、アプリケーションの URI パターンを使用してビジネストランザクション識別に役立つ情報をその URI の個々のセグメントに配置するのが一般的です。  

たとえば、http://retailstore.example.com/store/jump/category/shoes/departments/view-all/cat630006p という URL の例において、ビジネストランザクションはユーザリクエストをグループ化して、使用できるすべてのカテゴリを表示するために、/store/jumpall に一致する必要があるとします。 

このケースに一致する正規表現として、以下が考えられます。

/store/jump.*\b?all\b

あらゆる数字の一致

パターン内に含まれている数字を無視するとします。例えば、次のようなURLはどうでしょうか。

  • /group/1/session/

  • /group/1/session/

  • /group/31/session/

  • /group/2/session/

一致する正規表現の例としては、次が挙げられます。

  • ^/group/\d*/session/?$
  • session
  • /\d*/session/?$

数字の必須化

文字の後に数字が続く URL を 1 つのビジネストランザクションにグループ化します。例:

  • /aaa123.aspx
  • /b1.aspx

次のような表現を使うことができます。

/[a-z]+?[0-9]+?

文字の後に数字がこない URL は不一致となります。例:/z.aspx/z.aspx 

大文字と小文字の区別

正規表現の一致は、大文字と小文字を区別して行われます。大文字か小文字かを問わずに一致させるには、次のような表現を使用します。

/[a-zA-Z]+?[0-9]+?

または、i 修飾子を使用して大文字と小文字の区別なしで一致させます。例: 

(?i)\w*cart\w* 

addToCartaddTocart とも一致します。

バックエンドの検索ルール

JDBC バックエンド正規表現の例については、「JDBCバックエンド構成の例」の「複雑な URL を持つ JDBC」セクションを参照してください

独自の正規表現をテストするリソースが、http://www.regexplanet.com/advanced/java/index.html に用意されています。Java、JS、.NET、PHPなど、多くの言語エンジンの正規表現のテストページを利用できます。

パフォーマンス上の考慮事項

正規表現は AppDynamics 構成を設定する方法としては強力ですが、パフォーマンスの問題を回避するために、次の事項を考慮する必要があります。

  • 絶対に必要でない限り、ワイルドカード表現は使用しないでください。一致の前後でワイルドカード式(.*)を使用する必要はありません。また、ワイルドカード正規表現式を 1 つ使用するごとにパフォーマンスへの影響はおよそ 10 倍になります。
  • 構成数、構成を適用する頻度、ターゲット文字列のコンテンツの長さ。たとえば、正規表現を使用する構成を、長いターゲット文字列に頻繁に多くの場所で使用する場合、その構成の使用を減らすか、アプリケーションの頻度を減らすことを検討します。