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

Simple Log Service:検索構文と関数

最終更新日:May 07, 2025

Simple Log Service では、検索ステートメントを実行して、ログストアに保存されているログをクエリできます。検索結果は、単独で使用することも、複雑なデータ分析と処理のための分析ステートメントで使用することもできます。このトピックでは、検索ステートメントの構文、シナリオ、および例について説明します。

基本構文

各クエリ文は、検索ステートメントと分析ステートメントで構成されます。検索ステートメントと分析ステートメントは、縦棒(|)で区切られます。フォーマット:

Search statement|Analytic statement

検索ステートメントは単独で実行できます。分析ステートメントは、検索ステートメントと一緒に実行する必要があります。ログ分析機能は、検索結果のデータまたはログストア内のすべてのデータを分析するために使用されます。

重要
  • 検索ステートメントでは、最大 30 個の検索条件を指定することをお勧めします。

  • 分析ステートメントで FROM 句または WHERE 句を指定する必要はありません。デフォルトでは、現在のログストアのすべてのデータが分析されます。分析ステートメントはオフセットをサポートしておらず、大文字と小文字は区別されません。分析ステートメントにセミコロン(;)を追加する必要はありません。

ステートメント

説明

検索ステートメント

検索ステートメントは、1 つ以上の検索条件を指定します。検索ステートメントは、キーワード、数値、数値範囲、スペース、またはアスタリスク(*)にすることができます。

検索ステートメントとしてスペースまたはアスタリスク(*)を指定すると、検索に条件が使用されず、すべてのログが返されます。

分析ステートメント

分析ステートメントは、検索結果のデータまたはログストア内のすべてのデータを集計または分析するために使用されます。Simple Log Service がログの分析でサポートしている関数と構文の詳細については、以下のトピックを参照してください。

クエリ文の例:

* | SELECT status, count(*) AS PV GROUP BY status
説明

このトピックの検索例の raw ログの詳細については、「デバッグ」を参照してください。

検索ステートメントの作成プロセス

クエリ文を作成するには、次の手順を実行します。

手順 1:検索タイプを選択する

重要
  • [ログストア] でログをクエリする前に、インデックスを作成する必要があります。特定のフィールドを分析する場合は、フィールドインデックスを作成し、SELECT ステートメントを使用する必要があります。フィールドインデックスとフルテキストインデックスの作成方法の詳細については、「インデックスを作成する」を参照してください。

  • クエリと分析の結果は、インデックスの構成によって異なります。フルテキストインデックスとフィールドインデックスを作成した場合、フィールドインデックスが優先されます。

検索は、インデックスタイプに基づいて、フルテキスト検索とフィールド固有の検索に分類されます。フルテキスト検索とフィールド固有の検索の違いを以下に示します。

  • ログストアにフルテキストインデックスのみを作成した場合、フルテキスト検索構文のみを使用してクエリ条件を指定できます。

  • ログストアにフィールドインデックスを作成した場合、使用できる検索構文はフィールドのデータ型によって異なります。

    • doublelong:フィールド固有の検索構文のみを使用してクエリ条件を指定できます。

    • text:キーワードが関連付けられているフィールドを識別でき、そのフィールドにフィールドインデックスが作成されている場合は、フィールド固有の検索構文を使用してクエリ条件を指定することをお勧めします。キーワードが関連付けられているフィールドを識別できない場合は、フルテキスト検索構文を使用することをお勧めします。

      • フルテキスト検索構文を使用しても、ログストアにフルテキストインデックスが作成されていない場合は、インデックス付きデータが text 型のフィールドからのみデータをクエリできます。

      • フルテキスト検索構文を使用し、ログストアにフルテキストインデックスが作成されている場合は、すべてのフィールドからデータをクエリできます。この場合、すべてのフィールドのインデックス付きデータは text 型になります。

フルテキスト検索

フルテキスト検索構文を使用して、特定のフィールドからデータをクエリすることはできません。フルテキスト検索構文:keywords1 [ [ and | or | not ] keywords2 ] ...

keywords1 は、データのクエリに使用するキーワードを指定します。アスタリスク(*)と疑問符(?)を使用してあいまい一致を実行することもできます。クエリ条件を組み合わせるには、andor などの演算子を使用できます。

  • 例 1

    GET キーワードを含むログをクエリします。検索構文:GET

  • 例 2

    GET または POST キーワードを含むログをクエリします。検索構文:GET or POST

フィールド固有の検索

フィールド固有の検索構文を使用して、特定のフィールドからデータをクエリできます。フィールドは、textlongdouble、または json 型にすることができます。フィールド固有の検索構文:

indexname1 [ : | > | >= | < | <= | = | in ] keyword1 [ [ and | or | not ] indexname2 ... ]

重要
  • indexname1 は、データをクエリするフィールドの名前を指定します。フィールド名やテーブル名などの固有名詞に、スペースや漢字などの特殊文字、または andor などの構文キーワードが含まれている場合は、固有名詞を二重引用符("")で囲む必要があります。詳細については、「クエリ文で引用符を使用するにはどうすればよいですか?」を参照してください。

  • long または double 型のフィールドにインデックスが作成されている場合は、次の比較演算子を使用できます:>>=<<==、および in

  • 例 1

    request_method フィールドの値が GET であるログをクエリします。検索構文:request_method: GET

  • 例 2

    request_time_msec フィールドの値が 50 より大きいログをクエリします。検索構文:request_time_msec>50。request_time_msec フィールドは double 型です。

  • 例 3

    request_method フィールドの値が GET で、request_time_msec フィールドの値が 50 より大きいログをクエリします。検索構文:request_method: GET and request_time_msec>50

手順 2:フィールドデータ型を選択する

検索ステートメントを作成する際は、フィールドデータ型の特性に注意し、必要な演算子を使用してください。こうすることで、ステートメントを使用して効率的かつ正確にログを取得できます。

フィールドデータ型

フィールドデータ型

説明

サポートされている演算子

text

関連フィールドのデータ型を text に設定することで、文字列型のデータをクエリできます。デフォルトでは、フルテキストインデックスを有効にすると、__time__ フィールドを除くログ内のすべてのフィールドのデータ型が text に設定されます。

andornot():""\*、および ?

long または double

フィールドのデータ型を long または double に設定した場合にのみ、数値範囲を使用してフィールドの値をクエリできます。

  • フィールドのデータ型を double または long に設定しない場合、または数値範囲の構文が無効な場合、Simple Log Service はフルテキスト検索を実行し、検索結果が予期した結果と異なる場合があります。

    たとえば、owner_id>100 検索ステートメントを実行し、owner_id フィールドのデータ型が double または long でない場合、owner_id>、および 100 を含むログが返されます。この例では、大なり記号(>)はデリミタではありません。

  • フィールドのデータ型を text から double または long に変更した場合、等号(=)のみを使用してデータをクエリできます。範囲や、大なり(>)や小なり(<)などの比較演算子を使用してデータをクエリする場合は、データを再インデックス化する必要があります。詳細については、「ログストアのログを再インデックス化する」を参照してください。

andornot()>>=<<==、および in

json

JSON オブジェクト内のフィールドのデータ型を、フィールド値に基づいて longdouble、または text に設定し、フィールドの分析を有効にすることができます。

JSON オブジェクト内のフィールドのデータ型に基づいて演算子を指定します。

演算子

重要
  • in 演算子の文字は小文字にする必要があります。他の演算子は大文字と小文字は区別されません。

  • Simple Log Service は、sortascdescgroup byavgsumminmaxlimit などの演算子をサポートしています。これらの演算子をキーワードとして使用するには、演算子を二重引用符("")で囲む必要があります。

  • 次の演算子は、優先順位の高い順にリストされています。

    1. コロン(:)

    2. 二重引用符("")

    3. 括弧()

    4. and と not

    5. or

演算子

説明

:

この演算子は、key:value 形式に基づくフィールド固有の検索に使用されます。例:request_method:GET

フィールド名またはフィールド値に、スペース、コロン(:)、ハイフン(-)などの特殊文字が含まれている場合は、フィールド名またはフィールド値を二重引用符("")で囲む必要があります。例:"file info":apsara

and

and 演算子。例:request_method:GET and status:200

複数の検索キーワードの中に構文キーワードが存在しない場合、検索キーワードは and 演算子を使用して評価されます。たとえば、GET 200 cn-shanghaiGET and 200 and cn-shanghai と同等です。

or

or 演算子。例:request_method:GET or status:200

not

not 演算子。例:request_method:GET not status:200 または not status:200

( )

この演算子は、括弧()で囲まれたクエリ条件の優先順位を高めるために使用されます。例:(request_method:GET or request_method:POST) and status:200

""

この演算子は、構文キーワードを囲むために使用されます。構文キーワードが二重引用符("")で囲まれている場合、キーワードは通常の単語に変換されます。フィールド固有の検索では、二重引用符("")で囲まれた単語は全体として扱われます。

  • フィールド名またはフィールド値に、スペース、漢字、コロン(:)、ハイフン(-)などの特殊文字、または andor などの構文キーワードが含まれている場合は、フィールド名またはフィールド値を二重引用符("")で囲む必要があります。たとえば、"and" は、単語 and を含むログを返します。この場合、and は演算子ではありません。

  • Simple Log Service は、sortascdescgroup byavgsumminmaxlimit などの演算子をサポートしています。これらの演算子をキーワードとして使用するには、演算子を二重引用符("")で囲む必要があります。

  • ログがデータ変換機能または Logtail プラグインを使用して処理される場合、__tag__:__client_ip__ フィールドのキーは共通キーに変換されます。ログを検索する場合は、検索文で __tag__:__client_ip__ フィールドの名前を二重引用符("")で囲む必要があります。例:"__tag__:__client_ip__":192.0.2.1__tag__:__client_ip__ フィールドは、Log Service の予約フィールドです。このフィールドは、ログが収集されるホストの IP アドレスを示します。詳細については、「予約フィールド」をご参照ください。

\

エスケープ文字です。この文字は、二重引用符 ("") をエスケープするために使用されます。二重引用符 ("") は、エスケープされた後にのみ自身を示すことができます。たとえば、ログの内容が instance_id:nginx"01" の場合、instance_id:nginx\"01\" 文を実行してログを検索できます。

*

ワイルドカード文字。0 文字以上の文字と一致します。例: host:www*com

説明

Simple Log Service はすべてのログを検索し、指定された条件に一致する 100 ワードをクエリします。次に、Simple Log Service は、クエリ条件に一致する 1 つ以上のワードを含むログを返します。

?

1 つの文字に一致させるために使用するワイルドカード文字。例: host:aliyund?c

>

この演算子は、フィールド値が特定の数値よりも大きいログをクエリするために使用されます。例:request_time>100

>=

このオペレーターは、フィールド値が特定の数値以上であるログをクエリするために使用されます。例:request_time>=100

<

この演算子は、フィールド値が特定の数値より小さいログをクエリするために使用されます。例:request_time<100

<=

この演算子は、フィールドの値が特定の数値以下のログをクエリするために使用されます。例:request_time<=100

=

この演算子は、フィールド値が特定の数値と等しいログをクエリするために使用されます。 等号(=)とコロン(:)は、double型またはlong型のフィールドに対して同じ効果があります。 たとえば、request_time=100request_time:100 と同じです。

in

このオペレーターは、フィールド値が特定の数値範囲内にあるログをクエリするために使用されます。角かっこ [] は閉区間を示し、丸かっこ () は開区間を示します。数値範囲内の 2 つの数値を区切るには、スペースを使用します。例:request_time in [100 200] または request_time in (100 200]

重要

in オペレーターの文字は小文字にする必要があります。

__source__

このオペレーターは、特定のログソースのログをクエリするために使用されます。ワイルドカード文字がサポートされています。例:__source__:192.0.2.*

重要

__source__ フィールドは、Simple Log Service の予約フィールドです。このフィールドは source に省略できます。カスタム source フィールドを設定すると、カスタムフィールドは Simple Log Service の予約済み source フィールドと競合します。カスタムフィールドを検索する場合は、検索ステートメントで Source または SOURCE を使用する必要があります。

__tag__

このオペレーターは、メタデータを使用してログをクエリするために使用されます。例:__tag__:__receive_time__:1609837139

__topic__

このオペレーターは、特定のログ トピックのログをクエリするために使用されます。例:__topic__:nginx_access_log

手順 3:一致モードを選択する

キーワードとビジネス要件に基づいて、完全一致検索またはあいまい検索を使用できます。必要なログが返されない場合は、「ログをクエリしたときに結果が返されない場合はどうすればよいですか。」の手順に基づいて問題のトラブルシューティングを行ってください。

検索タイプ

説明

完全一致検索

完全な単語が検索に使用されます。

Simple Log Service は、単語分割を使用してログをクエリします。完全一致検索では、フレーズを完全に一致させることはできません。たとえば、abc def 検索文は、abcdef を含むログを返します。フレーズ abc def は完全に一致しません。abc def フレーズを完全に一致させるには、フレーズ検索を実行するか、LIKE 句を使用できます。詳細については、「フレーズ検索」および「完全一致を使用してログをクエリする方法」をご参照ください。

  • host:example.com: host フィールド値に example.com が含まれるログを返します。

  • PUT and cn-shanghai: PUT キーワードと cn-shanghai キーワードを含むログを返します。

  • * | Select * where http_user_agent like '%like Gecko%': http_user_agent フィールド値に like Gecko フレーズが含まれるログを返します。

  • #"redo_index/1": redo_index/1 フレーズを含むログを返します。

あいまい検索

あいまい検索を実行する場合、検索文の単語の中央または末尾にワイルドカード文字としてアスタリスク (*) または疑問符 (?) を追加できます。単語の長さは 1 ~ 64 文字である必要があります。単語にワイルドカード文字が含まれている場合、Simple Log Service はすべてのログを検索して、その単語に一致する 100 個の単語をクエリします。次に、Simple Log Service は、これらの単語の 1 つ以上を含むログを返します。より正確な単語を指定すると、検索結果がより正確になります。

重要
  • 単語の先頭にアスタリスク (*) または疑問符 (?) を追加することはできません。

  • long データ型と double データ型は、あいまい検索でアスタリスク (*) または疑問符 (?) をサポートしていません。数値範囲を指定してあいまい検索を実行できます。例: status in [200 299]。

あいまい検索は、次のメカニズムを使用するサンプルクエリです。

  • フィールドインデックス機能を有効にして、ログをクエリするフィールドを指定した場合、Simple Log Service はフィールドのインデックス付きデータからランダムサンプルを取得して結果を返します。 Simple Log Service は、フルテキストスキャンを実行しません。

  • フルテキストインデックス機能を有効にして、ログをクエリするフィールドを指定しない場合、Simple Log Service はすべてのフィールドのインデックス付きデータからランダムサンプルを取得して結果を返します。 Simple Log Service は、フルテキストスキャンを実行しません。

  • request_time>60 and request_method:Ge*: request_time フィールド値が 60 より大きく、request_method フィールド値が Ge で始まるログを返します。

  • addr*: すべてのログで addr で始まる 100 個の単語をクエリし、これらの単語の 1 つ以上を含むログを返します。

  • host:www.yl*: すべてのログの host フィールド値で www.yl で始まる 100 個の単語をクエリし、これらの単語の 1 つ以上を含むログを返します。

詳細については、「あいまい一致を使用してログをクエリする方法」をご参照ください。

検索文の例

異なるインデックス構成に基づいて異なるログに対して検索文を実行すると、文は異なる結果を返します。このセクションで提供される例は、次のサンプルログとインデックス構成に基づいています。

text、double、long 型

サンプルログ

NGINX アクセスログがサンプルログとして使用されます。

日志样例

インデックス構成

検索文を実行する前に、インデックスが構成されていることを確認してください。詳細については、「インデックスの作成」をご参照ください。インデックス構成を確認するには、次の手順を実行します。

  1. ログストアの [クエリと分析] ページで、[インデックス属性] > [属性] を選択します。image

  2. [検索と分析] パネルで、フィールドインデックスが構成されているかどうかを確認します。索引

一般的な検索例

予期される検索結果

検索文

デバッグ

成功した GET リクエストを記録するログ(状態コード:200 ~ 299)

request_method:GET and status in [200 299]

デバッグ

GET リクエストを記録し、リクエストの送信元リージョンが中国 (杭州) リージョンではないログ

request_method:GET not region:cn-hangzhou

なし

GET リクエストまたは POST リクエストを記録するログ

request_method:GET or request_method:POST

デバッグ

GET リクエストを記録しないログ

not request_method:GET

デバッグ

成功した GET リクエストまたは POST リクエストを記録するログ

(request_method:GET or request_method:POST) and status in [200 299]

デバッグ

失敗した GET リクエストまたは POST リクエストを記録するログ

(request_method:GET or request_method:POST) not status in [200 299]

デバッグ

成功した GET リクエスト(状態コード:200 ~ 299)を記録し、リクエスト時間が 60 秒未満のログ

request_method:GET and status in [200 299] not request_time>=60

デバッグ

リクエスト時間が 60 秒であるログ

request_time:60

デバッグ

request_time=60

デバッグ

詳細については、「クイックスタート: Azure App Service で PHP アプリを作成する - Azure App Service」をご参照ください。

request_time>=60 and request_time<200

デバッグ

request_time in [60 200)

デバッグ

request_time フィールドが存在するかどうか

request_time:*

デバッグ

request_time フィールドが空であるか、フィールド値が無効な数値であるログ

(request_time:"") or (not request_time > -10000000000)

デバッグ

request_time フィールドを含み、そのフィールド値が数値であるログ

request_time > -1000000000

デバッグ

and を含むログ

"and"
説明

この検索ステートメントでは、and は一般的な文字列であり、演算子ではありません。

デバッグ

リクエストメソッド フィールドの値が PUT であるログ

"request method":PUT
重要

リクエストメソッド フィールドの名前にはスペースが含まれています。検索ステートメントでは、フィールド名を二重引用符("")で囲む必要があります。

なし

トピックが HTTPS または HTTP のログ

__topic__:HTTPS or __topic__:HTTP

なし

192.0.2.1 ホストから収集されたログ

__tag__:__client_ip__:192.0.2.1

__tag__:__client_ip__ フィールドは、Simple Log Service の予約フィールドです。このフィールドは、ログが収集されるホストの IP アドレスを示します。詳細については、「予約フィールド」をご参照ください。

重要

データ変換機能または Logtail プラグインを使用してログが処理される場合、__tag__:__client_ip__ フィールドのキーは共通キーに変換されます。ログを検索する場合は、検索ステートメントで __tag__:__client_ip__ フィールドの名前を二重引用符("")で囲む必要があります。例:"__tag__:__client_ip__":192.0.2.1

なし

IP アドレスが 192.168.XX.XX と一致するログ

* | select * from log where key like '192.168.%.%'

詳細については、「LIKE 句を使用してあいまい一致を実装する」をご参照ください。

なし

remote_user フィールドが空ではないログ

not remote_user:""

デバッグ

remote_user フィールドが空のログ

remote_user:""

デバッグ

remote_user フィールドの値が null でないログ

not remote_user:"null"

デバッグ

remote_user フィールドを含まないログ

not remote_user:*

デバッグ

remote_user フィールドを含むログ

remote_user:*

デバッグ

フィールドの値が 上海 でないログ

not city:Shanghai
説明

中国語の文字列をクエリする場合は、インデックスを構成するときに [中国語を含める] をオンにする必要があります。詳細については、「インデックスを作成する」をご参照ください。

なし

高度な検索例

  • あいまい検索

    想定される検索結果

    検索ステートメント

    デバッグ

    特定の単語を含むログ。cn で始まる単語。

    cn*

    デバッグ

    region フィールド値が cn で始まるログ。

    region:cn*

    なし

    region フィールド値に cn* が含まれるログ。

    region:"cn*"
    説明

    この検索ステートメントでは、cn* は完全な文字列です。例:

    • ログの内容が region:cn*,en で、デリミタがカンマ (,) の場合、Simple Log Service はログの内容を regioncn*en に分割します。この検索ステートメントを使用してログを検索できます。

    • ログの内容が region:cn*hangzhou の場合、Simple Log Service は cn*hangzhou を全体として扱います。この場合、この検索ステートメントを使用してログを検索することはできません。

    なし

    特定の単語を含むログ。mozi で始まり、la で終わり、mozi と la の間に 1 文字が含まれる単語。

    mozi?la

    デバッグ

    特定の単語を含むログ。mo で始まり、la で終わり、mo と la の間に 0 個以上の文字が含まれる単語。

    mo*la

    デバッグ

    特定の単語を含むログ。moz または sa で始まる単語。

    moz* and sa*

    デバッグ

    region フィールド値が hai で終わるログ。

    検索ステートメントを使用してログを検索することはできません。SQL ステートメントの LIKE 句を使用してログを検索できます。詳細については、「LIKE 句を使用してあいまい一致を実装する」をご参照ください。

    * | select * from log where region like '%hai'

    なし

  • デリミタベースの検索

    Simple Log Service は、指定したデリミタに基づいてログの内容を複数の単語に分割します。デフォルトのデリミタは , '";=()[]{}?@&<>/:\n\t\r です。[デリミタ] を空のままにすると、Simple Log Service は各フィールドの値を全体として扱います。この場合、完全な文字列を使用するか、あいまい検索を実行することによってのみログを検索できます。デリミタの指定方法の詳細については、「インデックスを作成する」をご参照ください。

    たとえば、http_user_agent フィールド値が Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2 であるとします。

    • [デリミタ] を空のままにすると、Simple Log Service はフィールド値を全体として扱います。この場合、http_user_agent:Chrome 検索ステートメントを使用してログを検索することはできません。

    • [デリミタ], '";=()[]{}?@&<>/:\n\t\r に設定すると、Simple Log Service はフィールド値を Mozilla5.0WindowsNT6.1AppleWebKit537.2KHTMLlikeGeckoChrome192.0.2.0Safari537.2 に分割します。この場合、http_user_agent:Chrome 検索ステートメントを使用してログを検索できます。

    重要

    検索キーワードにデリミタが含まれている場合は、フレーズ検索を実行するか、LIKE 句を使用できます。例:

    • フレーズ検索: #"redo_index/1"。詳細については、「フレーズ検索」をご参照ください。

    • LIKE 句: * | select * from log where key like 'redo_index/1'

    想定される検索結果

    検索ステートメント

    デバッグ

    http_user_agent フィールド値に Chrome が含まれるログ

    http_user_agent:Chrome

    デバッグ

    http_user_agent フィールド値に LinuxChrome が含まれるログ

    http_user_agent:Linux and http_user_agent:Chrome

    デバッグ

    http_user_agent:"Linux Chrome"

    デバッグ

    http_user_agent フィールド値に Firefox または Chrome が含まれるログ

    http_user_agent:Firefox or http_user_agent:Chrome

    デバッグ

    request_uri フィールド値に /request/path-2 が含まれるログ

    request_uri:/request/path-2

    デバッグ

    request_uri フィールド値が /request で始まり、/file-0 を含まないログ

    request_uri:/request* not request_uri:/file-0

    デバッグ

    redo_index/1 フレーズが完全に一致するログ

    • #"redo_index/1"

    • * | select * from log where key like 'redo_index/1'

    説明

    フレーズ検索を実行するか、LIKE 句を使用してフレーズを完全に一致させることができます。完全一致検索を実行すると、redo_index1 などの単語が一致となります。

    なし

特殊なシナリオでのクエリの例

  • 検索文

    この演算子は、構文キーワードを囲むために使用されます。構文キーワードが二重引用符("")で囲まれている場合、キーワードは通常の単語に変換されます。フィールド固有の検索では、二重引用符("")で囲まれた単語は全体として扱われます。

    • フィールド名またはフィールド値に、スペース、中国語の文字、コロン(:)、ハイフン(-)などの特殊文字、または andor などの構文キーワードが含まれている場合は、フィールド名またはフィールド値を二重引用符("")で囲む必要があります。たとえば、"and" は、単語 and を含むログを返します。この場合、and は演算子ではありません。

    • Simple Log Service は、sortascdescgroup byavgsumminmaxlimit などの演算子をサポートしています。これらの演算子をキーワードとして使用するには、演算子を二重引用符("")で囲む必要があります。

    • データ変換機能または Logtail プラグインを使用してログが処理される場合、__tag__:__client_ip__ フィールドのキーは共通キーに変換されます。ログを検索する場合は、検索文で __tag__:__client_ip__ フィールドの名前を二重引用符("")で囲む必要があります。例:"__tag__:__client_ip__":192.0.2.1__tag__:__client_ip__ フィールドは、Simple Log Service の予約フィールドです。このフィールドは、ログが収集されるホストの IP アドレスを示します。詳細については、「予約フィールド」をご参照ください。

    想定されるクエリ結果

    検索文

    request method フィールド値に PUT が含まれるログ。フィールド名にはスペースが含まれています。

    "request method":PUT

    system error description フィールド値に DB が含まれるログ。フィールド名にはスペースが含まれています。

    "system error description":DB*

    Authorization フィールド値がスペースを含む Bearer 12345 であるログ。

    "Authorization": "Bearer 12345"

    errorContent フィールド値にスペースを含む The body is not valid json string が含まれるログ。

    * | select * where errorContent like '%The body is not valid json string%'

    192.0.2.1 ホストから収集されたログ。

    "__tag__:__client_ip__":192.0.2.1
  • 分析文

    • フィールド名やテーブル名などの固有名詞に、スペース、中国語の文字、コロン(:)、ハイフン(-)などの特殊文字、または andor などの構文キーワードが含まれている場合は、分析文で固有名詞を二重引用符("")で囲む必要があります。

    • 特定の文字が文字列を表す場合は、分析文で一重引用符('')を使用して文字を囲む必要があります。たとえば、'status' は status 文字列を示し、status または "status" は status ログフィールドを示します。

    想定されるクエリ結果

    クエリ文

    IP アドレスが 192.168.XX.XX と一致するログ。

    * | select * from log where key like '192.168.%.%'

    詳細については、「クエリ文で引用符を使用する方法」をご参照ください。

JSON タイプ

サンプルログ

{
  "timestamp": "2025-03-21T14:35:18Z", // タイムスタンプ
  "level": "ERROR", // レベル
  "service": {
    "name": "payment-processor", // サービス名
    "version": "v2.8.1", // バージョン
    "environment": "production" // 環境
  },
  "error": {
    "code": 5031, // エラーコード
    "message": "Failed to connect to third-party API", // エラーメッセージ(サードパーティ API への接続に失敗しました)
    "details": {
      "endpoint": "https://api.paymentgateway.com/v3/verify", // エンドポイント
      "attempts": 3, // 試行回数
      "last_response": {
        "status_code": 504, // ステータスコード
        "headers": {
          "Content-Type": "application/json", // Content-Type
          "X-RateLimit-Limit": "100" // レート制限
        }
      }
    }
  },
  "user": {
    "id": "usr-9a2b3c4d", // ユーザーID
    "session": {
      "id": "sess-zxy987", // セッションID
      "device": {
        "type": "mobile", // デバイスタイプ
        "os": "Android 14", // OS
        "network": "4G" // ネットワーク
      }
    }
  },
  "trace": {
    "correlation_id": "corr-6f5e4d3c", // 相関ID
    "span_id": "span-00a1b2" // スパンID
  }
}

インデックス構成

検索文を実行する前に、インデックスが構成されていることを確認してください。詳細については、「インデックスを作成する」をご参照ください。インデックス構成を確認するには、次の手順を実行します。

  1. ログストアの [クエリと分析] ページで、[インデックス属性] > [属性] を選択します。image

  2. [検索と分析] パネルで、フィールドインデックスが構成されているかどうかを確認します。索引

クエリと分析の例の詳細については、「JSON ログのクエリと分析」および「JSON ログのクエリと分析に関する FAQ」をご参照ください。

想定されるクエリ結果

クエリ文

失敗したリクエストを記録するログ

level:error

usr-9a2b3c4d ユーザー ID を持つリクエストを記録するログ

user.id:usr-9a2b3c4d

usr-9a2b3c4d ユーザー ID と状態コードで失敗したリクエストを記録するログ

user.id:usr-9a2b3c4d and error.details.last_response.status_code :504

関連情報