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,;[]{}()&^ *#@ ~ =<>/\?: '"
ログは、Mozilla
、5.0
、Windows
、NT
、6.1
、AppleWebKit
、537.2
、KHTML
、like
、Gecko
、Chrome
、192.0.2.0
、Safari
、537.2
に分割されます。
ログ分割後に取得された単語に基づいて、Simple Log Serviceでインデックスを作成できます。 インデックスを作成した後にのみ、ログをクエリおよび分析できます。
インデックスタイプ
フルテキストインデックス
重要中国語のコンテンツは、区切り文字を使用して分割できません。 ただし、中国語のコンテンツを分割する場合は、Include Chineseをオンにすることができます。 その後、Simple Log Serviceは、中国語の文法に基づいて中国語のコンテンツを自動的に分割します。
フルテキストインデックスのみを作成する場合は、検索機能のみを使用できます。 詳細については、「検索構文」をご参照ください。
Simple Log Serviceは、区切り文字を使用して、ログをテキストタイプの複数の単語に分割します。 キーワードを使用してログを照会できます。 たとえば、
ChromeまたはSafari
の検索文に基づいて、Chrome
またはSafari
を含むログを照会できます。 詳細については、「検索構文」をご参照ください。フィールドインデックス
説明Simple Log Serviceにログを収集する場合、またはSimple Log Serviceから他のクラウドサービスにログを送信する場合、Simple Log Serviceはログソースやタイムスタンプなどのフィールドをキー値形式でログに追加します。 これらのフィールドは、Simple Log Serviceの予約フィールドと見なされます。
Simple Log Serviceは、フィールド名でログを区別し、区切り文字を使用してフィールドを分割します。 サポートされているフィールドタイプは、
Text
、Long
、Double
、JSON
です。テキスト
タイプのフィールド: 全文ベースの検索文、フィールドベースの検索文、および分析文を使用して、データを照会および分析できます。 フルテキストインデックスが有効になっていない場合、フルテキストベースの検索文は、text型のすべてのフィールドのデータを照会します。 フルテキストインデックスが有効になっている場合、フルテキストベースの検索文はすべてのログからデータを照会します。Long
型とDouble
型のフィールド: フィールドベースの検索ステートメントと分析ステートメントを使用して、データを照会および分析できます。 分析ステートメントには、SELECTステートメントが含まれます。
フィールドインデックスを作成した後、フィールド名とフィールド値をkey:value形式で指定してログを照会できます。 SELECTステートメントを使用してログを照会することもできます。 詳細については、「フィールド固有の検索構文」および「検索構文」をご参照ください。
インデックスの作成
クエリと分析の結果は、インデックスの構成によって異なります。 ビジネス要件に基づいてインデックスを作成する必要があります。 フルテキストインデックスとフィールドインデックスの両方を作成する場合、フィールドインデックスが優先されます。
設定されたインデックスは、新しいログに対してのみ有効です。 履歴ログをクエリおよび分析するには、ログのインデックスを再作成する必要があります。 インデックスの作成後、インデックスは約1分以内に有効になります。
Simple Log Serviceコンソールにログインします。 [プロジェクト] セクションで、管理するプロジェクトをクリックします。
左側のナビゲーションウィンドウで、[ログストレージ] > [ログストア] を選択します。 [Logstores] タブで、管理するLogstoreをクリックします。
[検索と分析] ページで、[インデックスの有効化] をクリックします。
説明[インデックスの有効化] をクリックしてから1分後に最新のログデータを取得できます。
自動更新をオフにします。
Logstoreがクラウドサービス専用のLogstoreまたは内部Logstoreである場合、デフォルトで自動更新がオンになります。 この場合、Logstoreの組み込みインデックスは自動的に最新バージョンに更新されます。 上記のシナリオでインデックスを作成する場合は、[検索と分析] パネルで [自動更新] をオフにします。
警告クラウドサービス専用のLogstoreのインデックスを削除すると、Logstoreで有効になっている機能が影響を受ける可能性があります。 機能には、レポートとアラートが含まれます。
インデックスを設定します。
[検索と分析] ページで、[フルテキストインデックス] をオンにし、[自動インデックス生成] をクリックします。 Simple Log Serviceは、データ収集のプレビュー結果の最初のログに基づいて、フィールドインデックスを自動的に生成します。 ページ下部の
[+]
アイコンをクリックして、フィールドインデックスを手動で作成することもできます。重要フィールドを分析する場合は、フィールドインデックスを作成する必要があります。 分析のために、クエリ文に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を使用する必要があります。
フルテキストインデックスのパラメーターを次の表に示します。
次の表に、フィールドインデックスのパラメーターを示します。
インデックス設定例
ログには
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のデータ保持期間が経過すると、履歴インデックスによって占有されているストレージ領域が自動的に解放されます。
関連ドキュメント
クエリのパフォーマンスを向上させる方法の詳細については、「ログのクエリと分析の高速化」をご参照ください。
JSON形式のWebサイトログをクエリおよび分析する方法の詳細については、「JSONログのクエリと分析」をご参照ください。
API操作を呼び出してインデックスを管理する方法の詳細については、次の操作を参照してください。