ログ分析でログをクエリして分析する

このドキュメントでは、SQL ベースのクエリ インターフェースを提供するログ分析を使用して、ログデータをクエリして分析する方法について説明します。SQL を使用すると、パターンに一致するフィールドがあるログエントリをカウントするなどのタスクを実行できます。ログ分析には、クエリを作成するための SQL エディタとメニューベースのシステムが用意されています。クエリ結果を表示するには、表形式またはグラフでデータを可視化します。グラフをカスタム ダッシュボードに保存できます。

ログバケットのログビューまたは分析ビューをクエリできます。ログビューにクエリを実行すると、スキーマは LogEntry データ構造のスキーマに対応します。分析ビューのスキーマは作成者が決定するため、分析ビューは、ログデータを LogEntry 形式からより適した形式に変換する場合に使用されます。

ログ分析ではログエントリの重複除去は行われないため、クエリの作成方法に影響する可能性があります。また、ログ分析を使用する場合、いくつかの制限があります。これらのトピックの詳細については、次のドキュメントをご覧ください。

リンクされたデータセットについて

ログ分析は、リンクされた BigQuery データセットの作成をサポートしています。これにより、BigQuery は基盤となるデータを読み取りアクセス権で取得できます。リンクされたデータセットを作成する場合は、次のことができます。

このドキュメントでは、リンクされたデータセットを作成する方法や、予約済みスロットでクエリを実行するようにログ分析を構成する方法については説明しません。これらのトピックに関心がある場合は、BigQuery でリンクされたデータセットをクエリするをご覧ください。

始める前に

このセクションでは、ログ分析を使用する前に完了しておく必要のある手順について説明します。

ログバケットを構成する

ログ分析を使用できるようにログバケットがアップグレードされていることを確認します。

  1. Google Cloud コンソールで、[ログストレージ] ページに移動します。

    [ログストレージ] に移動

    このページを検索バーで検索する場合は、小見出しが「Logging」の結果を選択します。

  2. クエリを実行するログビューを含む各ログバケットで、[Log Analytics を使用可能] 列に [開く] が表示されていることを確認します。[アップグレード] が表示されている場合は、[アップグレード] をクリックしてダイアログを完了します。

IAM のロールと権限を構成する

このセクションでは、ログ分析の使用に必要な IAM ロールまたは権限について説明します。

  • ログ分析の使用とログビューへのクエリ実行に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

    • _Required および _Default のログバケットに対してクエリを実行する: ログ閲覧者roles/logging.viewer
    • プロジェクトのすべてのログビューに対してクエリを実行する: ログ表示アクセス者roles/logging.viewAccessor

    プリンシパルを特定のログビューに制限するには、プロジェクト レベルで付与されたログ表示アクセス者ロールに IAM 条件を追加するか、ログビューのポリシー ファイルに IAM バインディングを追加します。詳細については、ログビューへのアクセスを制御するをご覧ください。

    これらの権限は、[ログ エクスプローラ] ページでログエントリを表示するために必要な権限と同じです。ユーザー定義バケットでのビューに対するクエリ実行、または _Default ログバケットの _AllLogs ビューに対するクエリ実行に必要な追加ロールについて詳しくは、Cloud Logging のロールをご覧ください。

  • 分析ビューへのクエリ実行に必要な権限を取得するには、プロジェクトに対する Observability Analytics ユーザーroles/observability.analyticsUser)IAM ロールを付与するよう管理者に依頼してください。

ログデータをクエリ

このセクションでは、ログデータのクエリに使用できるアプローチについて説明します。

  • システム定義のクエリを読み込み、このクエリを編集して実行します。
  • カスタムクエリを入力して実行します。たとえば、既存のクエリを貼り付けたり、クエリを作成したりできます。カスタムクエリには、結合、ネストされたクエリ、その他の複雑な SQL ステートメントを含めることができます。例については、サンプル SQL クエリをご覧ください。
  • メニューから選択してクエリを作成し、そのクエリを実行します。ログ分析では、選択内容が SQL クエリに変換されます。このクエリは表示と編集の両方が可能です。

システム定義クエリの読み込み、編集、実行

  1. Google Cloud コンソールで、[ログ分析] ページに移動します。

    [ログ分析] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. [ビュー] メニューで、[] [ログ] または [] [分析ビュー] セクションに移動し、クエリするビューを選択します。

    クエリするビューを検索するには、[ フィルタ] バーを使用するか、リストをスクロールします。

    • ログビューは BUCKET_ID.LOG_VIEW_ID でリストされます。これらのフィールドは、ログバケットとログビューの ID を参照します。

    • 分析ビューは LOCATION.ANALYTICS_VIEW_ID でリストされます。これらのフィールドは、分析ビューの場所と ID を参照します。分析ビューは公開プレビュー版です。

  3. 次のいずれかを行います。

    • クエリビルダーに依存するシステム定義のクエリを読み込むには、[クエリ] ペインに [クエリビルダー] が表示されていることを確認します。クエリビルダーを使用すると、メニュー選択でクエリを定義できます。SQL エディタが表示されたら、 [ビルダー] をクリックします。

    • JSON 値を抽出するシステム定義のクエリを読み込むには、[クエリ] ペインに SQL エディタが表示されていることを確認します。このペインに [クエリビルダー] が表示されている場合は、[ SQL] をクリックします。

  4. [スキーマ] ペインで [クエリ] を選択し、[上書き] をクリックします。

    [クエリ] ペインに、システム定義のクエリが表示されます。[クエリビルダー] モードを選択したものの、SQL クエリを表示したい場合は、[ SQL] をクリックします。

  5. 省略可: クエリを変更します。

  6. クエリを実行するには、ツールバーに移動して [クエリを実行] を選択します。

    ログ分析では、クエリ結果が表形式で表示されます。ただし、グラフを作成することはできます。また、テーブルまたはグラフをカスタム ダッシュボードに保存することもできます。詳細については、SQL クエリの結果をグラフ化するをご覧ください。

    ツールバーに [BigQuery で実行] と表示されている場合は、デフォルトのクエリエンジンを使用するようにログ分析を切り替える必要があります。この変更を行うには、[クエリ] ペインのツールバーで [設定] をクリックし、[アナリティクス(デフォルト)] を選択します。

カスタムクエリを入力して実行する

SQL クエリを入力するには、次の操作を行います。

  1. Google Cloud コンソールで、[ログ分析] ページに移動します。

    [ログ分析] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. [クエリ] ペインで、[ SQL] をクリックします。

    • 期間を指定する場合は、期間セレクタを使用することをおすすめします。timestamp フィールドを指定する WHERE 句を追加すると、その値は期間セレクタの設定をオーバーライドし、そのセレクタは無効になります。

    • 例については、サンプル SQL クエリをご覧ください。

    • ログビューまたは分析ビューをクエリできます。FROM 句には次の形式を使用します。

      • ログビュー:

        FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
        
      • アナリティクス ビュー:

        FROM `analytics_view.PROJECT_ID.LOCATION.ANALYTICS_VIEW_ID`
        

      前の式のフィールドの意味は次のとおりです。

      • PROJECT_ID: プロジェクトの ID。
      • LOCATION: ログビューまたは分析ビューのロケーション。
      • BUCKET_ID: ログバケットの名前または ID。
      • LOG_VIEW_ID: ログビューの ID。100 文字に制限され、英字、数字、アンダースコア、ハイフンのみを使用できます。
      • ANALYTICS_VIEW_ID: 分析ビューの ID。100 文字以内で、使用できるのは英字、数字、アンダースコア、ハイフンのみです。

      クエリペインに FROM ステートメントを参照するエラー メッセージが表示される場合、ビューが見つかりません。このエラーの解決方法については、エラー FROM 句にはログビューを 1 つだけ含める必要があるをご覧ください。

  3. クエリを実行するには、ツールバーに移動して [クエリを実行] を選択します。

    ログ分析では、クエリ結果が表形式で表示されます。ただし、グラフを作成することはできます。また、テーブルまたはグラフをカスタム ダッシュボードに保存することもできます。詳細については、SQL クエリの結果をグラフ化するをご覧ください。

    ツールバーに [BigQuery で実行] と表示されている場合は、デフォルトのクエリエンジンを使用するようにログ分析を切り替える必要があります。この変更を行うには、[クエリ] ペインのツールバーで [設定] をクリックし、[アナリティクス(デフォルト)] を選択します。

クエリを作成、編集、実行する

クエリビルダー インターフェースでは、メニューから選択してクエリを作成できます。ログ分析では、選択内容が SQL クエリに変換されます。このクエリは表示および編集できます。たとえば、クエリビルダー インターフェースを使用して開始し、SQL エディタに切り替えてクエリを調整できます。

ログ分析では、[クエリビルダー] インターフェースから選択したメニューを常に SQL クエリに変換できます。ただし、すべての SQL クエリを クエリビルダー インターフェースで表現できるわけではありません。たとえば、結合を含むクエリはこのインターフェースで表すことはできません。

クエリを作成する手順は次のとおりです。

  1. Google Cloud コンソールで、[ログ分析] ページに移動します。

    [ログ分析] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. [クエリ] ペインに SQL エディタが表示されている場合は、 [ビルダー] を選択します。これにより、[クエリビルダー] ペインが開きます。

  3. [ソース] メニューを使用して、クエリするビューを選択します。選択した内容は、SQL クエリの FROM 句にマッピングされます。

  4. 省略可: 次のメニューを使用して、結果テーブルを制限またはフォーマットします。

    • すべてのフィールドを検索: 一致する文字列を検索します。選択内容は、SQL クエリの WHERE 句にマッピングされます。

    • : 結果テーブルに表示する列を選択します。選択内容は、SQL クエリの SELECT 句にマッピングされます。

      このメニューでフィールド名を選択すると、ダイアログが開きます。このダイアログでは、次の操作が可能です。

      • メニューを使用して、データを集計またはグループ化します。

        構文エラーを回避するため、1 つの列に適用した集計とグループ化は、他の列にも自動的に適用されます。エントリを集計してグループ化する方法の例については、クエリビルダーを使用してデータをグループ化して集計するをご覧ください。

      • 任意の型の値を別の指定されたデータ型にキャストします。詳細については、CAST のドキュメントをご覧ください。

      • 正規表現を使用して値の部分文字列を抽出します。詳細については、REGEXP_EXTRACT のドキュメントをご覧ください。

    • フィルタ: 特定の属性またはスパン ID を含むスパンにクエリを制限する場合は、フィルタを追加します。メニューには、使用可能なすべてのフィルタ オプションが表示されます。選択内容は、SQL クエリの WHERE 句にマッピングされます。

    • 並べ替え: 並べ替える列と、並べ替えの昇順または降順を設定します。選択内容は、SQL クエリの ORDER BY 句にマッピングされます。

    • 上限: 結果テーブルの最大行数を設定します。選択内容は、SQL クエリの LIMIT 句にマッピングされます。

  5. クエリを実行するには、ツールバーに移動して [クエリを実行] を選択します。

    ログ分析では、クエリ結果が表形式で表示されます。ただし、グラフを作成することはできます。また、テーブルまたはグラフをカスタム ダッシュボードに保存することもできます。詳細については、SQL クエリの結果をグラフ化するをご覧ください。

    ツールバーに [BigQuery で実行] と表示されている場合は、デフォルトのクエリエンジンを使用するようにログ分析を切り替える必要があります。この変更を行うには、[クエリ] ペインのツールバーで [設定] をクリックし、[アナリティクス(デフォルト)] を選択します。

例: クエリビルダーを使用してデータをグループ化して集計する

クエリビルダーで列を選択すると、各フィールドにグループ化と集計を追加できるメニューが表示されます。グループ化を使用すると、1 つ以上の列の値に基づいてデータをグループに整理できます。また、集計を使用すると、これらのグループに対して計算を実行して単一の値を返すことができます。

[] 要素で選択した各フィールドには、次のオプションを含むメニューが関連付けられています。

  • なし: このフィールドでグループ化または集計を行いません。
  • 集計: フィールドに [集計] が選択されている場合を除き、[] 要素にリストされているフィールドをグループ化します。これらのフィールドについては、各グループのすべてのエントリに対してオペレーションを実行して値を計算します。オペレーションは、フィールドの平均を計算したり、各グループのエントリ数をカウントしたりする場合があります。
  • Group By: Columns 要素にリストされているすべてのフィールドでエントリをグループ化します。

次の例は、エントリをグループ化してから何らかの集計を行うクエリを構築する方法を示しています。

この例では、クエリビルダーを使用してログエントリを重大度とタイムスタンプでグループ化し、各グループの http_request.response_size フィールドの平均を計算する方法について説明します。

データをグループ化して集計するクエリを作成するには、クエリビルダーのメニューから次の項目を選択します。

  1. [] メニューで、timestampseverityhttp_request.response_size の各フィールドを選択します。

    1. データをグループ化するには、timestamp フィールドをクリックして設定ダイアログを開きます。このダイアログで、[グループ化] オプションを選択し、[切り捨ての粒度] を HOUR に設定します。グループ化は、構文エラーを防ぐために、他のすべてのフィールドに自動的に適用されます。グループ化を適用できない無効なフィールドがある場合は、エラー メッセージが表示されます。このエラーを解決するには、メニューから無効なフィールドを削除します。

    2. http_request.response_size フィールドで集計を行うには、フィールドをクリックして設定ダイアログを開きます。このダイアログで、[集計] を選択します。[集計] メニューで、[平均] をクリックします。

  2. [フィルタ] メニューで、http_request.response_size を追加し、比較演算子を IS NOT NULL に設定します。このフィルタは、response_size 値を含むログエントリに一致します。

    クエリビルダーのメニューは次のようになります。

    クエリビルダーのメニューを使用して集計とグループ化を行います。

  3. クエリを実行するには、ツールバーに移動して [クエリを実行] を選択します。

    このクエリの結果は次のようになります。

    +-----------------------------------+----------+---------------+
    | Row | hour_timestamp              | severity | response_size |
    |     | TIMESTAMP                   | STRING   | INTEGER       |
    +-----+-----------------------------+----------+---------------+
    | 1   | 2025-10-06 16:00:00.000 UTC | NOTICE   | 3082          |
    | 2   | 2025-10-06 17:00:00.000 UTC | WARNING  | 338           |
    | 3   | 2025-10-06 16:00:00.000 UTC | INFO     | 149           |
    

前の例に対応する SQL クエリは次のとおりです。

SELECT
  -- Truncate the timestamp by hour.
  TIMESTAMP_TRUNC( timestamp, HOUR ) AS hour_timestamp,
  severity,
  -- Compute average response_size.
  AVG( http_request.response_size ) AS average_http_request_response_size
FROM
  `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
WHERE
  -- Matches log entries that have a response_size.
  http_request.response_size IS NOT NULL
GROUP BY
  -- Group log entries by timestamp and severity.
  TIMESTAMP_TRUNC( timestamp, HOUR ),
  severity
LIMIT
  1000

スキーマを表示する

スキーマは、フィールドとそのデータ型を含むデータの保存方法を定義します。この情報でクエリするフィールドと、フィールドを別のデータ型にキャストする必要があるかどうかが決まるため、重要です。たとえば、HTTP リクエストの平均レイテンシを計算するクエリを作成するには、レイテンシ フィールドにアクセスする方法と、そのフィールドが整数(100 など)として保存されるか、文字列("100" など)として保存されるかを知る必要があります。レイテンシ データが文字列として保存される場合、クエリでは平均を計算する前に値を数値に型変換する必要があります。

スキーマを特定するには、次の操作を行います。

  1. Google Cloud コンソールで、[ログ分析] ページに移動します。

    [ログ分析] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。

  2. [ビュー] メニューで、[] [ログ] または [] [分析ビュー] セクションに移動し、クエリするビューを選択します。

    [スキーマ] ペインが更新されます。データ型が JSON の場合、ログ分析は列のフィールドを自動的に推測します。これらの推定フィールドがデータに出現する頻度を確認するには、[ オプション] をクリックして、[情報と説明を表示] を選択します。

    ログビューの場合、スキーマは固定されており、LogEntry に対応しています。分析ビューの場合は、SQL クエリを変更してスキーマを変更できます。

次のステップ