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

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

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

ログ分析を使用する場合、いくつかの制限があります。さらに詳しいことついては、ログ分析の制限をご覧ください。

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

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

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

始める前に

ログ分析 を使用する前に、次の手順を行います。

  • ログ分析の使用に必要な権限を取得するには、プロジェクトに関する次の IAM ロールを付与してもらうよう管理者に依頼してください。

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

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

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

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

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

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

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

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

ログビューをクエリする

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

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

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

    [ログ分析] に移動

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

  2. [ログビュー] リストで、ビューを見つけて、[クエリ] を選択します。[クエリ] ペインには、クエリ対象のログビュー名のテーブル名を含むデフォルトのクエリが入力されます。この名前の形式は project_ID.region.bucket_ID.view_ID です。

    [Query] ペインでクエリを入力することや、表示されているクエリを編集することもできます。 クエリの例については、サンプルクエリをご覧ください。

    期間を指定するには、期間セレクタを使用することをおすすめします。ただし、timestamp フィールドを指定する WHERE 句を追加できます。クエリに timestamp フィールドが含まれている場合、そのタイムスタンプにより期間セレクタで選択された期間がオーバーライドされ、期間セレクタが無効になります。

  3. ツールバーに [クエリを実行] というボタンが表示されていることを確認します。

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

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

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

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

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

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

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

ログビューのスキーマを表示する

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

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

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

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

    [ログ分析] に移動

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

  2. [ログビュー] リストでログビューを見つけて、ログビューの名前を選択します。

    スキーマが表示されます。[フィルタ] フィールドを使用して、特定のフィールドを見つけることができます。スキーマは変更できません。

次のステップ