すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:スキャンベースのクエリの概要

最終更新日:Aug 26, 2024

Simple Log Serviceは、指定されたフィールドに基づいてログをスキャンし、クエリ結果を返すスキャンベースのクエリ機能を提供します。 この機能により、ログのインデックスを設定することなく、ログをクエリできます。 この機能では、Simple Log Service Processing Language (SPL) ステートメントを使用して、クエリ結果をフィルタリング、変換、および解析することもできます。 このトピックでは、スキャンベースのクエリ機能について説明します。

背景情報

Simple Log Serviceは、インデックスベースのクエリ機能を提供します。 ただし、一部のシナリオでは、インデックスを作成または使用できません。 例:

  • 一部のフィールドでは、コスト削減のためにインデックスは作成されません。 このシナリオでは、履歴ログをクエリする緊急の必要性が満たされない場合があります。

  • フィールド値の長さがインデックスでサポートされている上限を超えています。 このシナリオでは、余分な部品は照会できません。

  • 多数のフィールド名が関与し、事前に取得することはできません。 このシナリオでは、フィールドインデックスは作成できません。

  • フィールドのタイプが変更されます。 このシナリオでは、フィールドを照会できません。

上記の問題に対処するために、Simple Log Serviceはスキャンベースのクエリ機能とスキャンベースの分析機能を提供します。 この機能を使用して、スキャンに使用するフィールドのインデックスを作成する必要なく、ログをクエリおよび分析できます。 スキャンベースの分析機能の詳細については、「スキャンベースの分析の概要」をご参照ください。

説明

スキャンベースのクエリ機能はSPLをサポートしています。 詳細については、「SPLの概要」をご参照ください。 SPLステートメントを使用して、取得した生データから構造化情報を抽出し、生データのフィールドを処理し、生データをフィルタリングできます。 SPLステートメントは、マルチレベルデータ処理をサポートします。

メリット

  • 低コスト: インデックスを作成する必要はありません。 インデックストラフィックまたはインデックスストレージに対しては課金されません。

  • 柔軟な実装: インデックスを作成するか、インデックスタイプを指定するかに関係なく、ビジネス要件に基づいてフィールドタイプを指定できます。

  • 最適化された検索機能: より多くの機能がサポートされます。

制限事項

  1. スキャンベースのクエリのSPLステートメントの実行は制限されます。 詳細については、「制限事項」をご参照ください。

  2. ランダムページめくりはサポートされていません。

制御ポリシー機能の動作

Simple Log Serviceがスキャンベースのクエリ要求を受信すると、Simple Log Serviceは次の手順を実行します。

  1. 検索文を実行してログを照会します。

    重要

    検索文にはインデックスが必要です。 インデックスベースのクエリが不要な場合は、検索文としてアスタリスク (*) を指定することもできます。 たとえば、status:200 | WHERE userId = '123' | extend host=upper(hostname) ステートメントを実行する前に、statusフィールドのインデックスを作成する必要があります。 userIdおよびhostnameフィールドのインデックスを作成する必要はありません。

  2. 検索文のクエリ結果に対して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

インデックスベースのクエリとスキャンベースのクエリの比較

項目

インデックスベースのクエリ

スキャンベースのクエリ

構文

Searchステートメントを使用します。 詳細については、「検索構文」をご参照ください。

検索文 | SPL命令1 | SPL命令2 |...

インデックスを設定する必要があるかどうか

はい。

いいえ。

重要

インデックスベースの検索文にはインデックスが必要です。

分析ステートメントのサポート

サポートされています。

サポートされています。

ランダムなページめくりのサポート

サポートされています。

サポートされていません。

連続ページめくりのみがサポートされています。 1ページだけ前方または後方に移動できます。

ログヒストグラム

ログヒストグラムは、検索文の結果に基づいて表示されます。

ログヒストグラムは、検索文の結果とスキャンの進行状況に基づいて表示されます。

演算子と関数

論理計算と数学計算がサポートされています。 ファジー検索がサポートされています。 SQL関数はサポートされていません。

詳細については、「SPL手順」および「SPLがサポートするSQL関数」をご参照ください。

フィールドタイプ

フィールド型は、インデックス設定で指定されたデータ型によって決まります。 詳細については、「データ型」をご参照ください。

インデックスがフィールドに設定されているかどうかに関係なく、SPLステートメントのフィールドのタイプをテキストと見なします。 詳細については、「データ型の変換」をご参照ください。

結果サイズ

返すログの数は、Simple Log Serviceコンソールで指定するか、SDKを呼び出して指定できます。 最大数は100です。

次のいずれかの条件が満たされると、システムは現在のスキャンを停止し、結果を返します。

  • 特定されたログの数が、指定されたログ数に達しました。

    返すログの数は、Simple Log ServiceコンソールまたはSDKを呼び出して指定できます。

  • スキャンされたログの数が、現在のスキャンで自動的に指定された上限を超えています。 デフォルト値は100000で、これは検索文の結果に基づいて決定されます。

  • スキャン期間が45秒を超えています。

料金

インデックストラフィックとインデックスストレージに対して課金されます。 詳細については、「機能課金の課金項目」をご参照ください。

スキャンの料金は、スキャン後に返されたデータ量に相当するスキャントラフィックに基づいて課金されます。 システムは、インデックスベースのクエリの結果に基づいてログを識別します。