転置インデックスは、キーワードと論理ポインタで構成されるデータストレージ構造です。 論理ポインタは、実際のデータにマッピングすることができる。 キーワードを使用して、ログ内の特定のテキストのデータ行をすばやく見つけることができます。 インデックスはデータカタログに似ています。 インデックスを作成した後にのみ、ログをクエリおよび分析できます。 このトピックでは、Simple Log Serviceでサポートされているインデックスの定義と種類について説明します。 このトピックでは、インデックスの作成方法と例についても説明します。
前提条件
ログを分析する前に、標準ログストアにログを保存する必要があります。 詳細については、「データ収集の概要」および「Logstoreの管理」をご参照ください。
RAM (Resource Access Management) ユーザーを使用してインデックスを作成する場合は、RAMユーザーに必要な権限が付与されていることを確認してください。 権限を付与する方法の詳細については、「RAMユーザーへの権限付与」をご参照ください。 ポリシーの詳細については、「概要」をご参照ください。
インデックスの定義とタイプ
定義
ほとんどの場合、キーワードを使用して生ログからデータを照会できます。 たとえば、Chromeキーワードを含む次のログを取得するとします。 ログ分割が実行されない場合、ログは全体として考慮され、システムはログをChromeキーワードに関連付けません。 この場合、ログを取得できません。
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2
ログを検索するには、ログを別々の検索可能な単語に分割する必要があります。 区切り文字を使用してログを分割できます。 区切り文字は、ログが分割される位置を決定します。 この例では、次の区切り文字を使用して前のログを分割できます。\n\t\r,;[]{}()&^ *#@ ~ =<>/\?: '"
ログは、Mozilla
、5.0
、Windows
、NT
、6.1
、AppleWebKit
、537.2
、KHTML
、like
、Gecko
、Chrome
、192.0.2.0
、Safari
、537.2
に分割されます。
Simple Log Serviceは、ログ分割後に取得された単語に基づいてインデックスを作成します。 インデックスを使用すると、多数のログから特定の情報をすばやく見つけることができます。
インデックスタイプ
インデックスは、全文インデックスとフィールドインデックスに分類されます。 中国語コンテンツは区切り文字を使用して分割できません。 ただし、中国語のコンテンツを分割する場合は、「中国語を含める」をオンにできます。 その後、Simple Log Serviceは、中国語の文法に基づいて中国語のコンテンツを自動的に分割します。
フルテキストインデックス: Simple Log Serviceは、区切り文字を使用して、ログをテキストタイプの複数の単語に分割します。 キーワードを使用してログを照会できます。 たとえば、
ChromeまたはSafari
の検索文に基づいて、Chrome
またはSafari
を含むログを照会できます。 詳細については、「検索構文」をご参照ください。フィールドインデックス: Simple Log Serviceは、フィールド名でログを区別し、区切り文字を使用してフィールドを分割します。 サポートされているフィールドタイプは、
Text
、Long
、Double
、JSON
です。 フィールドインデックスを作成した後、フィールド名とフィールド値をkey:value形式で指定してログを照会できます。 SELECTステートメントを使用してログを照会することもできます。 詳細については、「フィールド固有の検索構文」および「ログ分析の概要」をご参照ください。説明Simple Log Serviceにログを収集する場合、またはSimple Log Serviceから他のクラウドサービスにログを送信する場合、Simple Log Serviceはログソースやタイムスタンプなどのフィールドをキー値形式でログに追加します。 これらのフィールドは、Simple Log Serviceの予約フィールドと見なされます。
フィールドインデックスを作成した後、次の検索文またはクエリ文を使用してデータをクエリできます。
検索文:
request_method:GET and status in [200 299]
この検索文は、成功したGETリクエストを記録するログを照会するために使用されます。 ステータスコードの範囲が200から299のGETリクエストは成功と見なされます。 検索文:request_method:GET not region:cn-hangzhou
この検索文は、中国 (杭州) リージョン以外のリージョンからのGETリクエストを記録するログを照会するために使用されます。クエリ文:
* | SELECT status_code FROM web_logs
クエリ文:
level: ERROR | SELECT status_code FROM web_logs
インデックスの作成に使用されるポリシー
設定されたインデックスは、新しいログに対してのみ有効です。 履歴ログをクエリおよび分析するには、ログのインデックスを再作成する必要があります。 インデックスの作成後、インデックスは約1分以内に有効になります。 フィールドインデックスの設定例の詳細については、「JSONログの照会と分析」および「Webサイトログの照会と分析」をご参照ください。.
クエリと分析の結果は、インデックスの構成によって異なります。 ビジネス要件に基づいてインデックスを作成する必要があります。 フルテキストインデックスとフィールドインデックスの両方を作成する場合、フィールドインデックスが優先されます。
フルテキストインデックスのみが設定されている場合は、検索構文のみを使用してログを照会できます。 詳細については、「検索構文」をご参照ください。
フィールドインデックスが設定されている場合、ログのクエリと分析に使用できるクエリステートメントは、ログ内のフィールドのデータ型によって異なります。
Long型とDouble型のフィールド: フィールドベースの検索ステートメントと分析ステートメントを使用して、データを照会および分析できます。 分析ステートメントには、SELECTステートメントが含まれます。
テキストタイプのフィールド: 全文ベースの検索文、フィールドベースの検索文、および分析文を使用して、データを照会および分析できます。 フルテキストインデックスが有効になっていない場合、フルテキストベースの検索文は、text型のすべてのフィールドのデータを照会します。 フルテキストインデックスが有効になっている場合、フルテキストベースの検索文はすべてのログからデータを照会します。
インデックス設定例
ログには
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
フィールドにインデックスを作成し、フィールドの値が400
の場合、文字列のstatus
はインデックストラフィックの計算に含まれず、400
された値はインデックストラフィックで8バイトとしてカウントされます。JSON: フィールド名とフィールド値はどちらもインデックストラフィックの計算に含まれます。 そこには、インデックス化されていないサブフィールドも含まれます。 詳細については、「」をご参照ください。インデックス化されていないJSONサブフィールドに対してインデックストラフィックが生成されるのはなぜですか?
サブフィールドがインデックス付けされていない場合、インデックストラフィックは、サブフィールドのデータ型をテキストとみなすことによって計算される。
サブフィールドがインデックス付けされている場合、インデックストラフィックは、サブフィールドのデータタイプに基づいて計算される。 データ型は、Text、Long、Doubleのいずれかです。
課金説明
ログストアは、従量課金データおよび従量課金機能の課金モードをサポートしています。 詳細については、「Logstoreの管理」、「従量課金機能の課金項目」、および「従量課金データの課金項目」をご参照ください。
従量課金データ課金モードを使用するログストア
インデックスはストレージスペースを占有します。 ストレージタイプの詳細については、「インテリジェント階層ストレージの設定」をご参照ください。
インデックスの再作成は料金を発生しません。
従量課金モードを使用するログストア
インデックスはストレージスペースを占有します。 ストレージタイプの詳細については、「インテリジェント階層ストレージの設定」をご参照ください。
インデックスを作成すると、トラフィックが生成されます。 インデックストラフィックの課金の詳細については、「課金項目」の「ログデータのインデックストラフィック」および「クエリLogstoresのログインデックストラフィック」をご参照ください。 インデックストラフィックを削減する方法の詳細については、このトピックの参照セクションを参照してください。
インデックスの再作成は料金を生成します。 インデックスの再作成中に、インデックスの作成時と同じ請求可能なアイテムと価格に基づいて課金されます。
手順
ステップ1: インデックスの作成
クエリと分析ページに移動します。
Simple Log Serviceコンソールにログインします。
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
タブで、管理するログストアをクリックします。
表示されるページで、
を選択します。 インデックスが作成されない場合は、[有効化] をクリックします。
自動更新をオフにします。 Logstoreがクラウドサービス専用のLogstoreまたは内部Logstoreである場合、デフォルトで自動更新がオンになります。 この場合、Logstoreの組み込みインデックスは自動的に最新バージョンに更新されます。 上記のシナリオでインデックスを作成する場合は、[検索と分析] パネルで [自動更新] をオフにします。
警告クラウドサービス専用のLogstoreのインデックスを削除すると、Logstoreで有効になっている機能が影響を受ける可能性があります。 機能には、レポートとアラートが含まれます。
インデックスを作成します。
インデックスパラメーターを設定します。 フィールドを分析する場合は、フィールドインデックスを作成する必要があります。 分析のために、クエリ文にSELECT文を含める必要があります。 フィールドインデックスは、フルテキストインデックスよりも優先度が高くなります。 インデックスの作成後、インデックスは1分以内に有効になります。
重要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を使用する必要があります。
ステップ2: ログの再インデックス
Simple Log Serviceは、履歴データのインデックスを設定または変更するために使用できるインデックス再作成機能を提供します。 最新のインデックス作成ルールに基づいて、Logstoreで指定した時間範囲のログを再インデックスできます。 詳細については、「Logstoreのログの再インデックス」および「関数の概要」をご参照ください。
次のステップ
ログの照会と分析
ログのクエリと分析方法の詳細については、「ログのクエリと分析」をご参照ください。 クエリと分析の例の詳細については、「Webサイトログのクエリと分析」、「JSONログのクエリと分析」、「NGINXモニタリングログの収集、クエリ、分析」、および「SLBのレイヤー7アクセスログの分析」をご参照ください。
フィールド値の最大長の指定
分析用に保持できるフィールド値のデフォルトの最大長は2,048バイトで、これは2 KBに相当します。 [Maximum Statistics Field Length] の値を変更できます。 有効値: 64 ~ 16384 単位:バイト
フィールド値の長さがこのパラメーターの値を超える場合、フィールド値は切り捨てられ、余分な部分は分析に関与しません。
LogReduce
LogReduceをオンにすると、Simple Log Serviceは収集中に非常に類似したテキストログを自動的にクラスター化し、ログからパターンを抽出します。 これは、ログを完全に理解するのに役立ちます。 詳細は、「LogReduce」をご参照ください。
インデックス作成の無効化
Logstoreのインデックス作成機能を無効にすると、Logstoreのデータ保持期間が経過すると、履歴インデックスによって占有されているストレージ領域が自動的に解放されます。
関連ドキュメント
クエリのパフォーマンスを向上させる方法の詳細については、「ログのクエリと分析の高速化」をご参照ください。
JSON形式のWebサイトログをクエリおよび分析する方法の詳細については、「JSONログのクエリと分析」をご参照ください。
よくある質問
関連する API 操作
CreateIndex: Logstoreのインデックスを作成します。
DeleteIndex: Logstoreのインデックスを削除します。
GetIndex: Logstoreのインデックスを照会します。
UpdateIndex: Logstoreのインデックスを更新します。