Simple Log Serviceは、指定されたフィールドに基づいてログをスキャンし、クエリ結果を返すスキャンベースのクエリ機能を提供します。 この機能により、ログのインデックスを設定することなく、ログをクエリできます。 この機能では、Simple Log Service Processing Language (SPL) ステートメントを使用して、クエリ結果をフィルタリング、変換、および解析することもできます。 このトピックでは、スキャンベースのクエリ機能について説明します。
背景情報
Simple Log Serviceは、インデックスベースのクエリ機能を提供します。 ただし、一部のシナリオでは、インデックスを作成または使用できません。 例:
一部のフィールドでは、コスト削減のためにインデックスは作成されません。 このシナリオでは、履歴ログをクエリする緊急の必要性が満たされない場合があります。
フィールド値の長さがインデックスでサポートされている上限を超えています。 このシナリオでは、余分な部品は照会できません。
多数のフィールド名が関与し、事前に取得することはできません。 このシナリオでは、フィールドインデックスは作成できません。
フィールドのタイプが変更されます。 このシナリオでは、フィールドを照会できません。
上記の問題に対処するために、Simple Log Serviceはスキャンベースのクエリ機能とスキャンベースの分析機能を提供します。 この機能を使用して、スキャンに使用するフィールドのインデックスを作成する必要なく、ログをクエリおよび分析できます。 スキャンベースの分析機能の詳細については、「スキャンベースの分析の概要」をご参照ください。
スキャンベースのクエリ機能はSPLをサポートしています。 詳細については、「SPLの概要」をご参照ください。 SPLステートメントを使用して、取得した生データから構造化情報を抽出し、生データのフィールドを処理し、生データをフィルタリングできます。 SPLステートメントは、マルチレベルデータ処理をサポートします。
メリット
低コスト: インデックスを作成する必要はありません。 インデックストラフィックまたはインデックスストレージに対しては課金されません。
柔軟な実装: インデックスを作成するか、インデックスタイプを指定するかに関係なく、ビジネス要件に基づいてフィールドタイプを指定できます。
最適化された検索機能: より多くの機能がサポートされます。
制限事項
スキャンベースのクエリのSPLステートメントの実行は制限されます。 詳細については、「制限事項」をご参照ください。
ランダムページめくりはサポートされていません。
制御ポリシー機能の動作
Simple Log Serviceがスキャンベースのクエリ要求を受信すると、Simple Log Serviceは次の手順を実行します。
検索文を実行してログを照会します。
重要検索文にはインデックスが必要です。 インデックスベースのクエリが不要な場合は、検索文としてアスタリスク (
*
) を指定することもできます。 たとえば、status:200 | WHERE userId = '123' | extend host=upper(hostname)
ステートメントを実行する前に、status
フィールドのインデックスを作成する必要があります。userId
およびhostname
フィールドのインデックスを作成する必要はありません。検索文のクエリ結果に対してSPL文を実行し、最終結果を返します。 たとえば、SPLステートメントを実行して、データをフィルタリング、変換、および解析できます。
基本構文
構文
SPL命令の構文の詳細については、「SPL命令」をご参照ください。
Index-based search statement | <spl-cmd> ... | <spl-cmd> ...
例
特定の条件に基づいて生ログをフィルタリングします。
status:200 | where host like '%www%'
新しいフィールドを生成し、新しいフィールドに基づいてデータをフィルタリングします。
status:200 | extend timediff = cast(endTime as bigint) - cast(beginTime as bigint) | where timediff > 100
JSONフィールドを展開して新しいフィールドを取得し、元のJSONフィールドを破棄します。
status:200 | parse-json body | project-away body
インデックスベースのクエリとスキャンベースのクエリの比較
項目 | インデックスベースのクエリ | スキャンベースのクエリ |
構文 |
|
|
インデックスを設定する必要があるかどうか | はい。 | いいえ。 重要 インデックスベースの検索文にはインデックスが必要です。 |
分析ステートメントのサポート | サポートされています。 | サポートされています。 |
ランダムなページめくりのサポート | サポートされています。 | サポートされていません。 連続ページめくりのみがサポートされています。 1ページだけ前方または後方に移動できます。 |
ログヒストグラム | ログヒストグラムは、検索文の結果に基づいて表示されます。 | ログヒストグラムは、検索文の結果とスキャンの進行状況に基づいて表示されます。 |
演算子と関数 | 論理計算と数学計算がサポートされています。 ファジー検索がサポートされています。 SQL関数はサポートされていません。 | 詳細については、「SPL手順」および「SPLがサポートするSQL関数」をご参照ください。 |
フィールドタイプ | フィールド型は、インデックス設定で指定されたデータ型によって決まります。 詳細については、「データ型」をご参照ください。 | インデックスがフィールドに設定されているかどうかに関係なく、SPLステートメントのフィールドのタイプをテキストと見なします。 詳細については、「データ型の変換」をご参照ください。 |
結果サイズ | 返すログの数は、Simple Log Serviceコンソールで指定するか、SDKを呼び出して指定できます。 最大数は100です。 | 次のいずれかの条件が満たされると、システムは現在のスキャンを停止し、結果を返します。
|
料金 | インデックストラフィックとインデックスストレージに対して課金されます。 詳細については、「機能課金の課金項目」をご参照ください。 | スキャンの料金は、スキャン後に返されたデータ量に相当するスキャントラフィックに基づいて課金されます。 システムは、インデックスベースのクエリの結果に基づいてログを識別します。 |