正規表現は、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/jump
と all
に一致する必要があるとします。
このケースに一致する正規表現として、以下が考えられます。
あらゆる数字の一致
パターン内に含まれている数字を無視するとします。例えば、次のようなURLはどうでしょうか。
/group/1/session/
/group/1/session/
/group/31/session/
/group/2/session/
一致する正規表現の例としては、次が挙げられます。
- ^/group/\d*/session/?$
- session
- /\d*/session/?$
数字の必須化
文字の後に数字が続く URL を 1 つのビジネストランザクションにグループ化します。例:
次のような表現を使うことができます。
文字の後に数字がこない URL は不一致となります。例:/z.aspx/z.aspx
大文字と小文字の区別
正規表現の一致は、大文字と小文字を区別して行われます。大文字か小文字かを問わずに一致させるには、次のような表現を使用します。
または、i 修飾子を使用して大文字と小文字の区別なしで一致させます。例:
addToCart
や addTocart
とも一致します。
バックエンドの検索ルール
JDBC バックエンド正規表現の例については、「JDBCバックエンド構成の例」の「複雑な URL を持つ JDBC」セクションを参照してください。
パフォーマンス上の考慮事項
正規表現は AppDynamics 構成を設定する方法としては強力ですが、パフォーマンスの問題を回避するために、次の事項を考慮する必要があります。
- 絶対に必要でない限り、ワイルドカード表現は使用しないでください。一致の前後でワイルドカード式(.*)を使用する必要はありません。また、ワイルドカード正規表現式を 1 つ使用するごとにパフォーマンスへの影響はおよそ 10 倍になります。
- 構成数、構成を適用する頻度、ターゲット文字列のコンテンツの長さ。たとえば、正規表現を使用する構成を、長いターゲット文字列に頻繁に多くの場所で使用する場合、その構成の使用を減らすか、アプリケーションの頻度を減らすことを検討します。