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

Simple Log Service:JSON ログのクエリと分析

最終更新日:Mar 26, 2025

このトピックでは、JSON ウェブサイトログをクエリおよび分析する方法と、SQL ステートメントのサンプルについて説明します。

前提条件

JSON モードのテキストログが、後続のログクエリと分析のために収集されます。 詳細については、「JSON モードでテキストログを収集する」をご参照ください。

手順 1:インデックスを作成する

  1. Simple Log Service コンソール にログオンします。

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    image

  3. [ログストレージ] > [ログストア] タブで、管理するログストアをクリックします。

    image

  4. クエリと分析ページの右上隅で、[インデックス属性] > [属性] を選択します。 インデックスが作成されていない場合は、ページの [有効化] をクリックします。 フルテキストインデックスとフィールドインデックス、およびインデックスの作成方法の詳細については、「インデックスを作成する」をご参照ください。

    説明

    ログ内のすべてのフィールドをクエリする場合は、フルテキストインデックスを使用することをお勧めします。 特定のフィールドのみをクエリする場合は、フィールドインデックスを使用することをお勧めします。 これにより、インデックストラフィックを削減できます。 フィールドを分析する場合は、フィールドインデックスを作成する必要があります。 分析のクエリステートメントには、SELECT ステートメントを含める必要があります。

  5. フィールドインデックスを作成します。 次の図は、JSON ログのサンプルと、フィールドのインデックスを作成する方法の例を示しています。

    日志样例

    配置索引

    • __topic____source__、および __tag__ フィールドは、Simple Log Service の予約フィールドです。詳細については、「予約フィールド」をご参照ください。

    • @timestampremote_addrremote_userhttp_refererhttp_user_agentstatusserver_protocalhttp_x_forward_for、および upstream_addr フィールドはリーフノードを除外します。 content フィールドのインデックスを作成できます。

    • request フィールドと time フィールドにはリーフノードが含まれており、リーフノードは JSON 配列ではありません。

      • request フィールドまたは time フィールドのインデックスを作成することはできません。 これら 2 つのフィールドをクエリまたは分析することはできません。

      • request フィールドと time フィールドのリーフノードのインデックスを作成できます。 インデックスを作成するときは、リーフノードの完全名を指定する必要があります。 フォーマット:KEY1.KEY2.KEY3。 例:time.request_time および time.upstream_response_time。 インデックスが作成された後、time.request_time フィールドと time.upstream_response_time フィールドをクエリできます。

    • body_bytes_sent フィールドの値は JSON 配列です。 このフィールドまたはこのフィールドのリーフノードのインデックスを作成することはできません。 body_bytes_sent フィールドまたは body_bytes_sent フィールドのリーフノードをクエリまたは分析することはできません。

手順 2:データを再インデックス化する

新しいインデックスは、インデックスが作成された後に収集されたデータに対してのみ有効です。 既存のデータをクエリする場合は、再インデックス機能を使用する必要があります。 詳細については、「ログストアのログを再インデックス化する」をご参照ください。

手順 3:ログをクエリおよび分析する

ログストアのクエリおよび分析ページで、クエリ文を入力し、クエリ時間範囲を指定して、文を実行します。分析文を記述する場合は、フィールド名を二重引用符(")で囲み、文字列を一重引用符(')で囲む必要があります。分析文には SELECT 文を含める必要があります。ログをクエリおよび分析する方法の詳細については、「ログのクエリと分析」をご参照ください。JSON ログのクエリと分析に関するよくある質問については、「JSON ログのクエリと分析に関する FAQ」をご参照ください。

  • 状態コード 200 が返されたリクエストのログをクエリします。

    content.status:200
  • 長さが 70 より大きいリクエストのログをクエリします。

    content.request.request_length > 70
  • GET リクエストのログをクエリします。

    content.request.request_method:GET
  • 状態コード別にリクエストログの数を計算します。

    * | SELECT "content.status", COUNT(*) AS PV GROUP BY "content.status"

    PV

  • リクエスト時間別にリクエスト数を計算し、リクエスト時間の昇順で結果をソートします。

    * | SELECT "content.time.request_time", COUNT(*) AS count GROUP BY "content.time.request_time" ORDER BY "content.time.request_time"

    请求时长

  • リクエストメソッド別に平均リクエスト時間を計算します。

    * | SELECT avg("content.time.request_time") AS avg_time,"content.request.request_method"  GROUP BY "content.request.request_method"

    平均请求时长

関連情報