分析対象フィールド
分析データの選択したフィールドは「分析」されます。分析は、反転インデックスでの使用に適した個々の用語にテキストブロックをトークン化(分割)することと、検索を向上させるためのそれらの用語を標準形式に正規化することから構成されます。分析対象フィールドと分析対象外フィールドでは、ADQL 比較演算子の動作は異なります。分析対象フィールドに対してクエリを作成するには、トークンの作成方法に関するいくつかの概念を理解する必要があります。
分析対象フィールドの大文字はすべて小文字に変換され、トークンが作成されます。
区切り文字やその他の要因(キャメルケースの用語など)も、文字列のトークン化方法に影響します。「myname@company.com」などの文字列の場合、「@」は区切り文字であり、したがって、myname と company.com は 2 つの別個のトークンです。さらに、company.com も 2 つの別個のトークンです。英数字以外の文字はすべて区切り文字であることに注意してください。キャメルケースを使用する用語(VicePresident 、Vice President、VicePresident など
例えば、<VicePresident:SalesAndMarketing> - EMEAAustraliaUSA94107 などの文字列
- vicepresident
- vice
- president
- salesandmarketing
- sales
- and
- marketing
- emeaaustraliausa94107
- emeaaustraliausa
- emea
- australia
- usa
- 94107
Analytics 分析対象フィールド
分析イベントの分析対象フィールドは次のとおりです。
- Logs:メッセージ
- Transactions:エラーおよびエラーの詳細
- Mobile:スタックトレース
分析対象フィールドに対するクエリ
LIKE 演算子を使用して、ログのメッセージフィールドなどの分析対象フィールドに対してフルテキスト検索を実行できます。「比較演算子」を参照してください。
分析対象フィールドでは、REGEXP 演算子は分析対象トークンと処理対象トークンにのみ正確に一致するため、メッセージ全体に対してクエリを実行することはできません。
次のログメッセージについて考えてみます。
[2016-06-09 06:07:50,118] [INFO ] [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] [com.appdynamics.provision.OrderMessageListener] [AD_REQUEST_GUID[2b8ce807-986c-45f9-a5b4-2fe5a6fd90f3]] Received a message to process the order Order_3138 for the user myname@company.com
このログメッセージでは、「@」が区切り文字であるため、myname と company.com は 2 つの別個のトークンです。このようなログメッセージで電子メールアドレスに基づいて結果を検索するには、トークン全体を検索する必要があります。
myname と company.com が 2 つの別個のトークンであるため、REGEXP を使用した次のようなクエリは fail となります。
SELECT FROM logs WHERE appName = 'yourAppName' AND sourceType = 'yourLogFile' AND message REGEXP ‘myname@company.*
LIKE 演算子は区切り文字の影響を受けないため、代わりに LIKE 演算子を使用するクエリがより適した選択肢になります。
SELECT FROM logs WHERE appName = 'yourAppName' AND sourceType = 'yourLogFile' AND message LIKE ‘myname@company'
また、ワイルドカードはトークン全体に対して動作するため、クエリでワイルドカードを使用することもできます。
SELECT FROM logs WHERE appName = 'yourAppName' AND sourceType = 'yourLogFile' AND message LIKE ‘myname@company*'
分析対象フィールドに対するクエリの例
次の分析ログイベントを検索します。
Jun 7 11:27:45 appd sshd[1032]: Illegal user test from 110.49.183.11 Jun 7 11:27:46 appd sshd[1032]: Failed password for illegal user test from 110.49.183.11 port 9218 ssh2 Jun 7 11:27:46 appd sshd[1032]: error: Could not get shadow information for NOUSER
次のクエリの結果に注目してください。
| クエリ | 成果 |
|---|---|
| SELECT*FROMlogs WHERE sourceType='yourLogFile' AND message REGEXP 'illegal.+user' |
クエリ文字列が複数のトークンにまたがっているため、サンプル内のどのログイベントとも一致しません。このようなインスタンスには LIKE を使用します。 |
| SELECT*FROM logs WHEREsourceType='yourLogFile'ANDmessage REGEXP 'illegal.*' |
最初の 2 つのログイベントに一致します。 |
| SELECT*FROM logs WHERE sourceType='yourLogFile'ANDmessage REGEXP 'Failed*' | トークンには小文字の「failed」しかないため、サンプル内のどのログイベントとも一致しません。 |
SELECT * FROM transactions WHERE application = 'yourApp' AND segments.errorList.errorCode REGEXP 'java[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]'