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

このドキュメントでは、ログ分析を使用するようにアップグレードされたログバケットに保存されているログデータに対してクエリを実行し、分析する方法について説明します。こうしたバケットにあるログは、SQL を使用してクエリを実行できます。これにより、ログのフィルタと集計を行えます。クエリ結果を表示するには、表形式を使用するか、グラフを使用してデータを可視化します。これらの表とグラフは、カスタム ダッシュボードに保存できます。

ログバケットのログビューまたは分析ビューのいずれかをクエリできます。ログビューにクエリを実行すると、スキーマは LogEntry データ構造のスキーマに対応します。アナリティクス ビューのスキーマは作成者が決定するため、アナリティクス ビューのユースケースの一つは、ログデータを LogEntry 形式から、より適した形式に変換することです。

ログ エクスプローラを使用すると、ログバケットがログ分析を使用するようにアップグレードされているかどうかにかかわらず、プロジェクトのログバケットに保存されているログエントリを表示できます。

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

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

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

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

始める前に

このセクションでは、Log Analytics を使用する前に完了する必要がある手順について説明します。

ログバケットを構成する

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

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

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

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

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

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

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

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

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

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

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

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

ログビューまたは分析ビューをクエリする

問題をトラブルシューティングする場合は、パターンに一致するフィールドを含むログエントリをカウントするか、HTTP リクエストの平均レイテンシを計算します。これらのアクションは、ログビューで SQL クエリを実行することで行えます。

ログビューに SQL クエリを発行するには、次の操作を行います。

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

    [ログ分析] に移動

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

  2. デフォルト クエリを読み込むには、次の操作を行います。

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

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

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

      • アナリティクスのビューは LOCATION.ANALYTICS_VIEW_ID でリストされます。これらのフィールドは、アナリティクスのビューのロケーションと ID を参照します。

    2. [スキーマ] ツールバーで [クエリ] をクリックします。

      [クエリ] ペインが更新され、選択した分析ビューをクエリする SQL クエリが表示されます。

  3. クエリを入力する場合は、次の操作を行います。

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

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

    • ログビューにクエリを実行するには、クエリの FROM 句の形式を次のようにします。

      FROM `PROJECT_ID.LOCATION.BUCKET_ID.LOG_VIEW_ID`
      
    • 分析ビューをクエリするには、クエリの FROM 句の形式を次のようにします。

      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 文字以内で、英字、数字、アンダースコア、ハイフンのみを使用できます。
  4. ツールバーに [クエリを実行] というボタンが表示されていることを確認します。

    ツールバーに [BigQuery で実行] と表示されている場合は、 [設定] をクリックして、[ログ分析(デフォルト)] を選択します。

  5. クエリを実行します。

    クエリが実行され、クエリの結果が [結果] タブに表示されます。

    ツールバー オプションを使用して、クエリをフォーマットし、クエリを消去して、BigQuery SQL リファレンス ドキュメントを開くことができます。

  6. 省略可: グラフを作成するか、結果をカスタム ダッシュボードに保存します。

    デフォルトでは、クエリ結果は表として表示されます。ただし、グラフを作成することはできます。また、テーブルやグラフをカスタム ダッシュボードに保存することもできます。

    グラフの作成と構成方法、クエリ結果をダッシュボードに保存する方法については、SQL クエリの結果をグラフ化するをご覧ください。

スキーマを表示する

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

列のデータ型が JSON の場合、スキーマにはその列で使用可能なフィールドはリストされません。たとえば、ログエントリには、json_payload という名前のフィールドを含めることができます。ログ分析を使用するようにログバケットをアップグレードすると、そのフィールドは JSON データ型の列にマップされます。スキーマには、列の子フィールドは示されません。つまり、スキーマを使用して json_payload.url が有効な参照かどうかを判断することはできません。

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

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

    [ログ分析] に移動

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

  2. [ビュー] ペインで、ログビューまたは分析ビューを見つけて、ビューを選択します。

    スキーマが表示されます。ログビューの場合、スキームは固定され、LogEntry データ構造に対応しています。アナリティクス ビューの場合は、SQL クエリを変更してスキーマを変更できます。

次のステップ