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

このドキュメントでは、ログ分析を使用するようにアップグレードされたログバケットに保存されているログに対してクエリを実行し、表示する方法について説明します。こうしたバケットにあるログは、SQL を使用してクエリを実行できます。これにより、ログのフィルタと集計を行えます。Cloud Logging の Log Analytics 機能については、Log Analytics の概要をご覧ください。

Log Analytics を使用するようにログバケットをアップグレードする場合、ログ エクスプローラへのアクセスを制限しません。問題のトラブルシューティングとこれらのバケット内の個々のログエントリの表示は、ログ エクスプローラを使用して引き続き行えます。

Log Analytics を使用するようにログバケットをアップグレードする方法については、次のドキュメントをご覧ください。

始める前に

  • Log Analytics を使用するようにアップグレードされたログバケットがあることを確認します。[ログストレージ] ページに、ログバケットとその構成情報が表示されます。

    Google Cloud コンソールのナビゲーション パネルで、[ロギング] を選択してから、[ログストレージ] を選択します。

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

  • [ログ分析] ページの読み込みに必要な権限を取得するには、クエリを実行し、ログを表示し、プロジェクトで次の IAM ロールを付与するよう管理者に依頼します。

    ロールの付与の詳細については、アクセスの管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

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

  • ログバケットのリンクされた BigQuery データセットを表示するために必要な権限を取得するには、プロジェクトでログリンク アクセサー roles/logging.linkViewer)IAM ロールを付与するよう管理者に依頼します。

  • BigQuery でデータを表示するために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼します。

ログビューをクエリする

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

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

  1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログ分析] を選択します。

    [ログ分析] に移動

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

    [Query] ペインでクエリを入力することや、表示されているクエリを編集することもできます。

    クエリの期間を設定するには、期間セレクタを使用するか、timestamp フィールドを指定する WHERE 句を追加します。期間セレクタを使用して期間を指定することをおすすめします。

    クエリでタイムスタンプを指定すると、そのタイムスタンプにより期間セレクタで選択された期間がオーバーライドされ、期間セレクタが無効になります。期間セレクタを使用するには、クエリの WHERE 句からタイムスタンプ式を削除します。

  3. ツールバーで、[クエリを実行] をクリックします。

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

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

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

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

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

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

  1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログ分析] を選択します。

    [ログ分析] に移動

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

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

クエリを保存する

実行するすべてのクエリは自動的に 30 日間保存され、[ログ分析] ページの [最近] タブを選択することでアクセスできます。[最近] タブに表示されるクエリを検索、表示、実行、共有できます。

クエリを将来使用できるように保持する場合は、有用な情報でアノテーションを付けるか、チームメートがクエリを表示して実行できるようにしてからクエリを保存します。保存したクエリは、名前、説明、公開設定ラベルで検索して並べ替えることができます。これらのクエリの編集と削除もできます。保存したクエリは、削除するまで保持されます。

Google Cloud プロジェクトごとに 10,000 件のクエリを保存できます。

コンソール

クエリを保存するには、次の操作を行います。

  1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログ分析] を選択します。

    [ログ分析] に移動

  2. [クエリ] ペインにクエリを入力します。

    [クエリ] ペインにクエリを入力するには、新しいクエリを入力するか、[最近] タブからクエリを選択するか、[保存済み] タブからクエリを選択します。

    [クエリ] ペインのクエリが有効になると、 [保存] が有効になります。

  3. [保存] をクリックし、[名前] フィールドと [説明] フィールドに入力します。 これらのフィールドに設定した値は [保存済み] タブに表示されます。

  4. 省略可: Google Cloud プロジェクト ビューの [ログ分析] ページへのアクセス権を持つユーザーが保存したクエリを実行できるようにするには、[プロジェクトで共有] の切り替えを有効にします。

    デフォルトでは、この切り替えは無効になっており、表示が制限されています。

  5. [クエリを保存] をクリックします。

  6. 省略可: 表示される保存済みクエリを表示、並べ替え、実行するには、[保存済み] タブを選択します。

    保存したクエリは、名前、説明、公開設定ラベルで並べ替えおよびフィルタリングできます。クエリの内容でフィルタすることもできます。

[保存済み] タブのオプションを使用して、作成したクエリを編集および削除できます。

  • クエリを編集するには、 [その他のオプション] をクリックし、[編集] を選択します。 [名前] フィールドと [説明] フィールドの値は変更できます。ただし、クエリ自体は変更できません。

  • 保存済みクエリを削除するには、 [その他のオプション] をクリックし、[削除] を選択します。

API

Logging API を使用してクエリを保存するには、savedQueries.create メソッドを使用します。このメソッド、そのパラメータ、レスポンス データの詳細については、savedQueries.create のリファレンス ページをご覧ください。

savedQueries.create メソッドは、メソッドのリファレンス ページにある API Explorer ウィジェットを使用して実行できます。ログ分析のクエリでは、opsAnalyticsQuery フィールドを指定する必要があります。次の例は、SavedQuery のインスタンスを含むリクエスト本文の例を示しています。

{
  "parent": "projects/my-project/locations/global"
  "saved_query":
  {
     "ops_analytics_query":
     {
        "sql_query_text" :
           "SELECT
           timestamp, log_name, severity, json_payload, resource, labels
           FROM
           `TABLE`
           WHERE
           timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
           ORDER BY timestamp ASC
           LIMIT 100"
     }
     "visibility": "PRIVATE"
  }
}

クエリを共有する

コンソール

問題のトラブルシューティングを行う場合や、異常な結果が発生した場合、クエリとその結果をチームメイトと共有することをおすすめします。[ログ分析] ページでクエリ結果を表示するときに、URL をコピーできます。この URL を開くと、実行したクエリとその結果が表示されます。

クエリと結果をチームメンバーと共有する手順は、次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログ分析] を選択します。

    [ログ分析] に移動

  2. [クエリ] ペインにクエリを入力し、[クエリを実行] をクリックします。

    [クエリ] ペインにクエリを入力するには、新しいクエリを入力するか、[最近] タブからクエリを選択するか、[保存済み] タブからクエリを選択します。

  3. [リンクを共有] をクリックします。

  4. チームメートにリンクを送信します。

    同僚がリンクを開くと、[ログ分析] ページが開きます。このページには、実行したクエリとその結果が表示されます。

    URL を正常に開くには、Google Cloud プロジェクトのチームメートの Identity and Access Management ロールに、Logging ページの表示に必要な権限が含まれている必要があります。

API

Logging API で共有クエリを作成するには、savedQueries.Create メソッドを使用し、visibility フィールドに SHARED の値を指定します。

最近のクエリまたは保存済みクエリの表示と実行

クエリを表示または再実行するには、[ログ分析] ページで [最近] タブを選択し、クエリを探します。

  • クエリを実行するには、[実行] をクリックします。
  • クエリを表示するには、 [その他のオプション] メニューのオプションを使用します。

保存済みクエリを表示、編集、実行するには、[ログ分析] ページの [保存済み] タブを選択し、クエリを探します。

  • クエリを実行するには、[実行] をクリックします。
  • クエリを編集、表示、削除するには、 [その他のオプション] メニューのオプションを使用します。

BigQuery を使用してログをクエリする

ログ分析を使用するようにアップグレードされたログバケットがある場合は、リンクされた BigQuery データセットを作成して BigQuery のデータを表示することもできます。この構成では、BigQuery を使用して、リンクされたデータセットを通じてアクセスできるログデータを他のビジネスデータと結合できます。リンクされたデータセットを作成する方法については、ログバケットの閲覧権限を BigQuery に付与するをご覧ください。

リンクされたデータセットを削除するには、次の操作を行います。

  1. Google Cloud コンソールのナビゲーション パネルで [ロギング] を選択してから、[ログ分析] を選択します。

    [ログ分析] に移動

  2. [ログビュー] リストで、ビューを見つけて、[クエリ] を選択します。[Query] ペインには、デフォルトのクエリが入力されます。

    [Query] ペインでクエリを入力することや、表示されているクエリを編集することもできます。

  3. ツールバーで [BigQuery で実行] をクリックします。

    [BigQuery Studio] ページが開きます。クエリの FROM ステートメントは、BigQuery のテーブルパスの構文を使用して、リンクされたデータセットのビューへのパスを指定するように変更されます。

    表示されたクエリを編集することもできます。

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

次のステップ