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

Simple Log Service:インデックスの作成

最終更新日:Dec 09, 2024

Logstoreのログを照会および分析するには、インデックスを作成する必要があります。 このトピックでは、Simple Log Serviceでサポートされているインデックスの定義と種類について説明します。 このトピックでは、インデックスの作成方法と例についても説明します。

なぜインデックスを作成する必要があるのか

ほとんどの場合、キーワードを使用して生ログからデータを取得できます。 たとえば、Chromeキーワードを含む次のログを取得するとします。

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2

ログ分割が実行されない場合、ログは全体として考慮され、システムはログをChromeキーワードに関連付けません。 この場合、Simple Log Serviceでログを取得できません。 ログを検索するには、ログを別々の検索可能な単語に分割する必要があります。 区切り文字を使用してログを分割できます。 区切り文字は、ログが分割される位置を決定します。 この例では、次の区切り文字を使用して前のログを分割できます。\n\t\r,;[]{}()&^ *#@ ~ =<>/\?: '" ログは、Mozilla5.0WindowsNT6.1AppleWebKit537.2KHTMLlikeGeckoChrome192.0.2.0Safari537.2に分割されます。

ログ分割後に取得された単語に基づいて、Simple Log Serviceでインデックスを作成できます。 インデックスを作成した後にのみ、ログをクエリおよび分析できます。

インデックスタイプ

  • フルテキストインデックス

    重要

    中国語のコンテンツは、区切り文字を使用して分割できません。 ただし、中国語のコンテンツを分割する場合は、Include Chineseをオンにすることができます。 その後、Simple Log Serviceは、中国語の文法に基づいて中国語のコンテンツを自動的に分割します。

    フルテキストインデックスのみを作成する場合は、検索機能のみを使用できます。 詳細については、「検索構文」をご参照ください。

    Simple Log Serviceは、区切り文字を使用して、ログをテキストタイプの複数の単語に分割します。 キーワードを使用してログを照会できます。 たとえば、ChromeまたはSafariの検索文に基づいて、ChromeまたはSafariを含むログを照会できます。 詳細については、「検索構文」をご参照ください。

    image

  • フィールドインデックス

    説明

    Simple Log Serviceにログを収集する場合、またはSimple Log Serviceから他のクラウドサービスにログを送信する場合、Simple Log Serviceはログソースやタイムスタンプなどのフィールドをキー値形式でログに追加します。 これらのフィールドは、Simple Log Serviceの予約フィールドと見なされます。

    Simple Log Serviceは、フィールド名でログを区別し、区切り文字を使用してフィールドを分割します。 サポートされているフィールドタイプは、TextLongDoubleJSONです。

    • テキストタイプのフィールド: 全文ベースの検索文、フィールドベースの検索文、および分析文を使用して、データを照会および分析できます。 フルテキストインデックスが有効になっていない場合、フルテキストベースの検索文は、text型のすべてのフィールドのデータを照会します。 フルテキストインデックスが有効になっている場合、フルテキストベースの検索文はすべてのログからデータを照会します。

    • Long型とDouble型のフィールド: フィールドベースの検索ステートメントと分析ステートメントを使用して、データを照会および分析できます。 分析ステートメントには、SELECTステートメントが含まれます。

    フィールドインデックスを作成した後、フィールド名とフィールド値をkey:value形式で指定してログを照会できます。 SELECTステートメントを使用してログを照会することもできます。 詳細については、「フィールド固有の検索構文」および「検索構文」をご参照ください。image

インデックスの作成

重要

クエリと分析の結果は、インデックスの構成によって異なります。 ビジネス要件に基づいてインデックスを作成する必要があります。 フルテキストインデックスとフィールドインデックスの両方を作成する場合、フィールドインデックスが優先されます。

設定されたインデックスは、新しいログに対してのみ有効です。 履歴ログをクエリおよび分析するには、ログのインデックスを再作成する必要があります。 インデックスの作成後、インデックスは約1分以内に有効になります。

  1. Simple Log Serviceコンソールにログインします。 [プロジェクト] セクションで、管理するプロジェクトをクリックします。

  2. 左側のナビゲーションウィンドウで、[ログストレージ] > [ログストア] を選択します。 [Logstores] タブで、管理するLogstoreをクリックします。

  3. [検索と分析] ページで、[インデックスの有効化] をクリックします。

    説明

    [インデックスの有効化] をクリックしてから1分後に最新のログデータを取得できます。

    image

  4. 自動更新をオフにします。

    Logstoreがクラウドサービス専用のLogstoreまたは内部Logstoreである場合、デフォルトで自動更新がオンになります。 この場合、Logstoreの組み込みインデックスは自動的に最新バージョンに更新されます。 上記のシナリオでインデックスを作成する場合は、[検索と分析] パネルで [自動更新] をオフにします。

    警告

    クラウドサービス専用のLogstoreのインデックスを削除すると、Logstoreで有効になっている機能が影響を受ける可能性があります。 機能には、レポートとアラートが含まれます。

    自动更新索引

  5. インデックスを設定します。

    [検索と分析] ページで、[フルテキストインデックス] をオンにし、[自動インデックス生成] をクリックします。 Simple Log Serviceは、データ収集のプレビュー結果の最初のログに基づいて、フィールドインデックスを自動的に生成します。 ページ下部の [+] アイコンをクリックして、フィールドインデックスを手動で作成することもできます。

    image

    重要
    • フィールドを分析する場合は、フィールドインデックスを作成する必要があります。 分析のために、クエリ文にSELECT文を含める必要があります。 フィールドインデックスは、フルテキストインデックスよりも優先度が高くなります。

    • Simple Log Serviceは、特定の予約フィールドのインデックスを自動的に作成します。 詳細については、「予約フィールド」をご参照ください。

      Simple Log Serviceは、__topic__ および __source__ の予約フィールドのインデックスを作成するときに、区切り文字を空のままにします。 したがって、2つのフィールドをクエリするキーワードを指定する場合、完全一致のみがサポートされます。

    • __tag__ というプレフィックスが付いたフィールドは、フルテキストインデックスをサポートしていません。 __tag ___というプレフィックスが付いたフィールドをクエリおよび分析する場合は、フィールドインデックスを作成する必要があります。 サンプルクエリ文: * | select "__tag __:__ receive_time__"

    • request_timeなど、同じ名前の2つのフィールドがログに含まれている場合、Simple log Serviceはいずれかのフィールドをrequest_time_0として表示します。 2つのフィールドは、Simple Log Serviceにrequest_timeとして保存されます。 フィールドのインデックスのクエリ、分析、出荷、変換、または作成を行う場合は、request_timeを使用する必要があります。

    フルテキストインデックスのパラメーターを次の表に示します。

    パラメーター

    説明

    LogReduce

    LogReduceをオンにすると、Simple Log Serviceは収集中に非常に類似したテキストログを自動的にクラスター化し、ログからパターンを抽出します。 これは、ログを完全に理解するのに役立ちます。 詳細は、「LogReduce」をご参照ください。

    大文字と小文字

    検索が大文字と小文字を区別するかどうかを指定します。

    • 大文字と小文字を区別するをオンにすると、検索は大文字と小文字を区別します。 たとえば、ログにinternalErrorが含まれている場合、internalErrorキーワードのみを使用してログを検索できます。

    • 大文字と小文字の区別をオフにすると、検索は大文字と小文字を区別しません。 たとえば、ログにinternalErrorが含まれている場合、INTERNALERRORまたはinternalerrorキーワードを使用してログを検索できます。

    中国語を含める

    検索で中国語コンテンツと英語コンテンツを区別するかどうかを指定します。

    • [中国語を含める] をオンにしてログに漢字が含まれている場合、中国語のコンテンツは中国語の文法に基づいて分割されます。 英語のコンテンツは、指定された区切り文字を使用して分割されます。

      重要

      中国語のコンテンツが分割されると、書き込み速度が低下します。 作業は慎重に行ってください。

    • [中国語を含める] をオフにすると、ログのすべてのコンテンツが指定された区切り文字を使用して分割されます。

    デリミタ

    ログの内容を複数の単語に分割するために使用される区切り文字。 デフォルトでは、Simple Log Serviceは, '";=()[]{}?@&<>/:\n\t\rの区切り文字を使用します。 既定の区切り文字がビジネス要件を満たしていない場合は、カスタム区切り文字を指定できます。 すべてのASCIIコードを区切り文字として指定できます。

    Delimiterを空のままにすると、Simple Log Serviceはログ全体を全体として考慮します。 この場合、完全な文字列を使用するか、ファジーマッチを実行してログを検索できます。

    たとえば、ログの内容は /url/pic/abc.gifです。

    • 区切り文字を指定しない場合、ログの内容は単一の単語 /url/pic/abc.gifと見なされます。 /url/pic/abc.gifキーワードを使用するか、/url/pic/* を使用してログを検索し、ファジーマッチを実行できます。

    • 区切り文字をスラッシュ (/) に設定すると、ログの内容はurlpicabc.gifの3つの単語に分割されます。 urlabc.gif、または /url/pic/abc.gifキーワードを使用してログを検索するか、pi * を使用してファジーマッチを実行します。

    • 区切り文字をスラッシュ (/) とピリオド (.) に設定すると、ログの内容はurlpicabcgifの4つの単語に分割されます。 上記のいずれかの単語を使用するか、またはファジーマッチを実行して、ログを検索できます。

    次の表に、フィールドインデックスのパラメーターを示します。

    パラメーター

    説明

    フィールド名

    ログフィールドの名前。 例: client_ip

    名前には、英数字、およびアンダースコア (_) のみを使用できます。 文字またはアンダースコア (_) で始まる必要があります。

    重要
    • パブリックIPアドレスやUNIXタイムスタンプなど、__tag__ フィールドのインデックスを作成する場合は、フィールド名__tag __: KEY形式の値に設定する必要があります。 例: __tag __:__ receive_time__ 詳細については、「予約済みフィールド」をご参照ください。

    • __tag__ フィールドは数値インデックスをサポートしません。 __tag__ フィールドのインデックスを作成するときは、Typetextに設定する必要があります。

    タイプ

    フィールド値のデータ型。 有効な値: text、long、double、json。 詳細については、「データ型」をご参照ください。

    フィールドのデータ型をlongまたはdoubleに設定した場合、そのフィールドに大文字小文字の区別中国語を含める、または区切り文字を設定できません。

    エイリアス

    フィールドのエイリアスを設定します。 たとえば、client_ipフィールドのエイリアスをipに設定できます。

    エイリアスには、英数字、およびアンダースコア (_) のみを使用できます。 文字またはアンダースコア (_) で始まる必要があります。

    重要

    フィールドのエイリアスは、分析ステートメントでのみ使用できます。 検索文でフィールドの元の名前を使用する必要があります。 分析のために、クエリ文にSELECT文を含める必要があります。 詳細については、「列エイリアス」をご参照ください。

    大文字と小文字

    検索が大文字と小文字を区別するかどうかを指定します。

    • 大文字と小文字を区別するをオンにすると、検索は大文字と小文字を区別します。 たとえば、ログにinternalErrorが含まれている場合、internalErrorキーワードのみを使用してログを検索できます。

    • 大文字と小文字の区別をオフにすると、検索は大文字と小文字を区別しません。 たとえば、ログにinternalErrorが含まれている場合、INTERNALERRORまたはinternalerrorキーワードを使用してログを検索できます。

    デリミタ

    ログの内容を複数の単語に分割するために使用される区切り文字。 デフォルトでは、Simple Log Serviceは, '";=()[]{}?@&<>/:\n\t\rの区切り文字を使用します。 既定の区切り文字がビジネス要件を満たしていない場合は、カスタム区切り文字を指定できます。 すべてのASCIIコードを区切り文字として指定できます。

    Delimiterを空のままにすると、Simple Log Serviceはログ全体を全体として考慮します。 この場合、完全な文字列を使用するか、ファジーマッチを実行してログを検索できます。

    たとえば、ログの内容は /url/pic/abc.gifです。

    • 区切り文字を指定しない場合、ログの内容は単一の単語 /url/pic/abc.gifと見なされます。 /url/pic/abc.gifキーワードを使用するか、/url/pic/* を使用してログを検索し、ファジーマッチを実行できます。

    • 区切り文字をスラッシュ (/) に設定すると、ログの内容はurlpicabc.gifの3つの単語に分割されます。 urlabc.gif、または /url/pic/abc.gifキーワードを使用してログを検索するか、pi * を使用してファジーマッチを実行します。

    • 区切り文字をスラッシュ (/) とピリオド (.) に設定すると、ログの内容はurlpicabcgifの4つの単語に分割されます。 上記のいずれかの単語を使用するか、またはファジーマッチを実行して、ログを検索できます。

    中国語を含める

    検索で中国語コンテンツと英語コンテンツを区別するかどうかを指定します。

    • [中国語を含める] をオンにしてログに漢字が含まれている場合、中国語のコンテンツは中国語の文法に基づいて分割されます。 英語のコンテンツは、指定された区切り文字を使用して分割されます。

      重要

      中国語のコンテンツが分割されると、書き込み速度が低下します。 作業は慎重に行ってください。

    • [中国語を含める] をオフにすると、ログのすべてのコンテンツが指定された区切り文字を使用して分割されます。

    分析の有効化

    フィールドの [分析の有効化] をオンにした場合にのみ、フィールドの統計分析を実行できます。

インデックス設定例

  • ログにはrequest_timeフィールドが含まれ、request_time>100フィールドベースの検索文が実行されます。

    • フルテキストインデックスのみが設定されている場合、request_time> 、および100を含むログが返されます。 より大きい記号 (>) は区切り文字ではありません。

    • フィールドインデックスのみが設定され、フィールドタイプがDoubleとLongの場合、request_timeフィールド値が100を超えるログが返されます。

    • フルテキストインデックスとフィールドインデックスの両方が設定されており、フィールドタイプがDoubleとLongの場合、設定されたフルテキストインデックスはrequest_timeフィールドには有効にならず、request_timeフィールドの値が100を超えるログが返されます。

  • ログにはrequest_timeフィールドが含まれ、request_time全文ベースの検索文が実行されます。

    • フィールドインデックスのみが設定され、フィールドタイプがDoubleとLongの場合、ログは返されません。

    • フルテキストインデックスのみが設定されている場合、request_timeフィールドを含むログが返されます。 この場合、ステートメントはすべてのログからデータを照会します。

    • フィールドインデックスのみが設定され、フィールドタイプがTextの場合、request_timeフィールドを含むログが返されます。 この場合、ステートメントはText型のすべてのフィールドからデータを照会します。

  • ログにstatusフィールドが含まれ、* | SELECT status, count(*) AS PV GROUP BY statusクエリ文が実行されます。

    • フルテキストインデックスのみが設定されている場合、ログは返されません。

    • statusフィールドにインデックスが設定されている場合、さまざまなステータスコードのページビュー (PV) の合計数が返されます。

インデックストラフィック

  • フルテキストインデックス

    すべてのフィールド名とフィールド値はテキストとして保存されます。 この場合、フィールド名とフィールド値はインデックストラフィックの計算に含まれます。

  • フィールドインデックス

    インデックストラフィックの計算に使用される方法は、フィールドのデータ型によって異なります。

    • Text: フィールド名とフィールド値はどちらもインデックストラフィックの計算に含まれます。

    • LongとDouble: フィールド名はインデックストラフィックの計算に含まれません。 各フィールド値は、インデックストラフィックで8バイトとしてカウントされます。

      たとえば、Long型のstatusフィールドにインデックスを作成し、フィールド値が200の場合、文字列ステータスはインデックストラフィックに含まれず、値200はインデックストラフィックで8バイトカウントされます。

    • JSON: フィールド名とフィールド値はどちらもインデックストラフィックの計算に含まれます。 そこには、インデックス化されていないサブフィールドも含まれます。 詳細については、「」をご参照ください。インデックス化されていないJSONサブフィールドに対してインデックストラフィックが生成されるのはなぜですか?

      • サブフィールドがインデックス付けされていない場合、インデックストラフィックは、サブフィールドのデータ型をテキストとみなすことによって計算される。

      • サブフィールドがインデックス付けされている場合、インデックストラフィックは、サブフィールドのデータタイプに基づいて計算される。 データ型は、Text、Long、Doubleのいずれかです。

課金説明

従量課金データ課金モードを使用するログストア

従量課金モードを使用するログストア

  • インデックスはストレージスペースを占有します。 ストレージタイプの詳細については、「インテリジェント階層ストレージの設定」をご参照ください。

  • インデックスを作成すると、トラフィックが生成されます。 インデックストラフィックの課金の詳細については、「課金項目」の「ログデータのインデックストラフィック」および「クエリLogstoresのログインデックストラフィック」をご参照ください。 インデックストラフィックを削減する方法の詳細については、インデックスのトラフィック料金を削減するにはどうすればよいですか?

  • インデックスの再作成は料金を生成します。 インデックスの再作成中に、インデックスの作成時と同じ請求可能なアイテムと価格に基づいて課金されます。

次のステップ

  • データのクエリと分析

    検索と分析の例については、以下を参照してください。

  • フィールド値の最大長を指定する

    分析用に保持できるフィールド値のデフォルトの最大長は2,048バイトで、これは2 KBに相当します。 max_text_lenパラメーターの値を変更できます。 有効値: 64 ~ 16384 単位はバイトです。

    重要

    フィールド値の長さがこのパラメーターの値を超える場合、フィールド値は切り捨てられ、余分な部分は分析に関与しません。

    设置字段最大长度

  • LogReduce

    LogReduceをオンにすると、Simple Log Serviceは収集中に非常に類似したテキストログを自動的にクラスター化し、ログからパターンを抽出します。 これは、ログを完全に理解するのに役立ちます。 詳細は、「LogReduce」をご参照ください。

  • インデックス作成の無効化

    Logstoreのインデックス作成機能を無効にすると、Logstoreのデータ保持期間が経過すると、履歴インデックスによって占有されているストレージ領域が自動的に解放されます。

関連ドキュメント

よくある質問