マルチプロジェクト クエリのオブザーバビリティ スコープを構成する

このドキュメントでは、データが複数のプロジェクトに保存されている場合に、グラフを作成したり、ログデータを表示したりする方法について説明します。デフォルトでは、プロジェクトで生成されたデータのみが可視化ツールで使用できます。ただし、スコープを構成すると、可視化ツールと分析ツールで複数のプロジェクトに保存されているデータをクエリできます。

1 つのGoogle Cloud プロジェクトに保存されているデータのみをモニタリングまたは表示する場合は、構成を行う必要はありません。

スコープは読み取り時の集計を提供する

スコープを使用すると、可視化ツールと分析ツールで、複数の場所に保存されているデータの読み取り時集計を実行できます。スコープはデータの保存場所を制御しません。代わりに、クエリエンジンはスコープを使用して、データの検索場所を特定します。

指標データとトレースデータは、常にデータの元の Google Cloud プロジェクトに保存されます。複数のプロジェクトに保存されている指標データを 1 つのグラフに表示するには、それらのプロジェクトを一覧表示するように指標スコープを構成します。このスコープを構成すると、グラフまたはアラート ポリシーを作成するときに、これらのサービスによって発行されたクエリは、リストされているプロジェクトの指標データを自動的に返します。トレースデータでも同様の動作になります。

デフォルトでは、ログデータはデータの元の Google Cloud プロジェクト、請求先アカウント、フォルダ、組織に保存されます。ただし、Logging を構成して、ログデータの送信元リソースから別のプロジェクトや一元化されたログバケットなどの別の場所にログデータを転送できます。いずれの場合も、カスタム ログスコープを構成します。ログスコープには、プロジェクトではなくログビューをリストすることをおすすめします。ログビューは、ログバケット内のログエントリのサブセットに対する読み取りアクセス権を提供します。たとえば、3 つのプロジェクトにログデータが保存されている場合、これらの各プロジェクトの _Default/_AllLogs ビューを含むようにログビューを構成できます。

Google Cloud Observability でのスコープの使用方法

Google Cloud Observability の分析ツールと可視化ツールはデータ型固有のスコープに依存し、ツールで表示または分析するデータのクエリ対象となるリソースを決定します。

例:

  • [ログ エクスプローラ] ページが開くと、システムはデフォルトのログスコープにリストされているリソースに対してログデータをクエリします。このページを開いた後、ツールバー オプションを使用して別のスコープのリソースをクエリできます。
  • [Trace エクスプローラ] ページが開くと、システムはデフォルトのトレース スコープにリストされているプロジェクトに対してトレースデータをクエリします。このページを開いた後、ツールバー オプションを使用して別のスコープのリソースをクエリできます。
  • アラート ポリシーを作成すると、Monitoring は指標スコープにリストされているプロジェクトに指標データをクエリします。次に、クエリ レスポンスを分析し、インシデントを作成するかどうかを判断します。
  • [Metrics Explorer] ページを使用してグラフを作成する場合は、グラフ化する指標を指定します。Monitoring は、指標スコープにリストされているプロジェクトに対して指標データをクエリし、クエリ結果を表示します。

Logging と Trace は、クエリがデータを返す前に、リソースに対する Identity and Access Management(IAM)ロールを検証します。たとえば、ログスコープで、ログデータを読み取る権限が付与されていないプロジェクトが指定されている場合、そのプロジェクトに対するクエリはデータを返しません。

モニタリングは、クエリが発行されたプロジェクトの IAM ロールを確認します。AllEnv という名前のプロジェクトの指標スコープに、AllEnvProdStaging の各プロジェクトがリストされているとします。また、AllEnv プロジェクトでモニタリング閲覧者のロールが付与されているとします。AllEnv プロジェクトを使用している場合、Metrics Explorer ページで作成したグラフには、3 つのプロジェクトの指標データが自動的に表示されます。

Google Cloud Observability のスコープ

このセクションでは、Google Cloud Observability で使用されるスコープについて説明します。

オブザーバビリティ スコープ

オブザーバビリティ スコープには、デフォルトのログスコープとデフォルトのトレース スコープが指定されています。[ログ エクスプローラ] や [Trace エクスプローラ] などのページでは、デフォルトのスコープを使用して、ページが開いたときにクエリするリソースを決定します。たとえば、3 つのプロジェクトでトレースデータを生成するアプリケーションがあるとします。デフォルトのトレース スコープを設定することで、これらの 3 つのプロジェクトを自動的にクエリするように トレース エクスプローラ ページを構成できます。

オブザーバビリティ スコープを構成しない場合、次のようになります。

  • [ログ エクスプローラ] ページで、プロジェクトのログデータがクエリされます。
  • [Trace エクスプローラ] ページで、プロジェクトのトレースデータがクエリされます。

オブザーバビリティ スコープは指標データには適用されません。

オブザーバビリティ スコープを構成するタイミング

次のシナリオでは、オブザーバビリティ スコープを構成します。

  • カスタム ログスコープを作成し、そのスコープにリストされているリソースをデフォルトでクエリしたい。

  • カスタム トレース スコープを作成し、そのスコープにリストされているプロジェクトがデフォルトでクエリされるようにする。

オブザーバビリティ スコープに関連する上限

説明 最大値
プロジェクトあたりのオブザーバビリティ スコープの数 1

ログスコープ

ログスコープは、[ログ エクスプローラ] ページと、ログデータを表示するダッシュボードで使用されます。

  • [ログ エクスプローラ] ページが開くと、システムはデフォルトのログスコープにリストされているリソースに対してログデータのクエリを自動的に実行します。このページには、スコープを切り替えるためのコントロールもあります。

  • ダッシュボードの場合、実装によって、システムがプロジェクトをクエリするか、デフォルトのログスコープに一覧表示されているリソースをクエリするかが決まります。

ログスコープには、ログビュー、プロジェクト、フォルダ、組織を配置できます。

カスタム ログスコープを構成しない場合、[ログ エクスプローラ] ページはプロジェクトにログデータをクエリします。

カスタム ログスコープを作成するタイミング

次の構成用にカスタム ログスコープを作成します。

いずれの場合も、1 つ以上のログビューを一覧表示するようにカスタムログ スコープを構成します。これらのログビューは、一元化されたログバケットにある場合もあれば、異なるログバケットにある場合もあります。一元化されたログバケットを使用する場合は、複数のカスタム ログスコープを作成し、それぞれに独自のログビューのセットを設定できます。

カスタム ログスコープを作成する場合は、デフォルトのログスコープの更新を検討してください。

ログスコープを構成する際のベスト プラクティス

  • ログビューのみを含めます。
  • プロジェクトとログビューの両方を一覧表示するスコープは構成しないでください。

ログスコープに関連付けられた上限

説明 最大値
プロジェクトあたりのログスコープの数 100
ログスコープあたりのプロジェクト数 5
ログスコープあたりのログビューまたはプロジェクトの数 100

詳細については、ログスコープの作成と管理をご覧ください。

指標スコープ

指標スコープは、Cloud Monitoring によって発行されるすべてのクエリで使用されます。たとえば、アラート ポリシーや Metrics Explorer などのグラフツールは、指標スコープにリストされているプロジェクトに対してクエリを発行します。

指標スコープを構成しない場合、Monitoring サービスはプロジェクトに指標データをクエリします。

指標スコープを構成するタイミング

次のいずれかに該当する場合は、指標スコープを構成します。

  • 異なるプロジェクトに保存されているデータをグラフに表示する必要がある場合。
  • 異なるプロジェクトに保存されているデータをモニタリングするアラート ポリシーが必要な場合。
  • アプリは App Hub で登録します。このシナリオについては、管理プロジェクトの指標スコープをご覧ください。

指標スコープに関連する上限

説明 最大値
プロジェクトあたりの指標スコープの数 1
指標スコープあたりのプロジェクト数 375

詳細については、指標スコープの概要をご覧ください。

トレースのスコープ

トレース スコープは、[Trace エクスプローラ] ページで使用されます。このページが開くと、システムはデフォルトのトレース スコープにリストされているプロジェクトのトレースデータを自動的にクエリします。このページには、スコープを切り替えるためのコントロールもあります。

カスタム トレース スコープを構成しない場合、[Trace エクスプローラ] ページはプロジェクトにトレースデータをクエリします。

カスタム トレース スコープを作成するタイミング

異なる Google Cloud プロジェクトのリソースに依存するアプリケーションがある場合は、カスタム トレース スコープを作成します。

トレース スコープに関連する上限

説明 最大値
プロジェクトあたりのトレース スコープの数 100
トレース スコープあたりのプロジェクト数 20

詳細については、トレース スコープの作成と管理をご覧ください。

オブザーバビリティ スコープを構成する

このセクションはフォルダや組織には適用されません。

ログデータとトレースデータの場合、表示しているプロジェクトと、検索対象のプロジェクトおよびログビューに対する Identity and Access Management(IAM)ロールは、クエリで返されるデータに影響します。表示する権限のないログデータを表示するクエリを発行すると、クエリはログデータを返しません。

指標データの場合、プロジェクトの指標スコープが構成されると、プロジェクトには、指標スコープにリストされているプロジェクトによって保存された指標データへの読み取りアクセス権が付与されます。プロジェクトの指標データを表示できる Identity and Access Management ロールがユーザーに付与されると、そのユーザーはプロジェクトで使用可能な指標データを表示できます。

オブザーバビリティ スコープを構成するには、デフォルトのログスコープとデフォルトのトレース スコープを設定します。このセクションの残りの部分では、これらの操作を完了する方法について説明します。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Observability API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Observability API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. スコープを作成して表示するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

    • ログスコープを作成して表示し、デフォルトのログスコープを取得する: プロジェクトに対するログ構成書き込みroles/logging.configWriter
    • 指標スコープを変更する: 使用中のプロジェクトと、その指標スコープに追加する各プロジェクトに対するモニタリング管理者roles/monitoring.admin
    • トレース スコープを作成して表示する。また、デフォルトのスコープを取得して設定する: プロジェクトに対するオブザーバビリティ スコープ編集者roles/observability.scopesEditor

    ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

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

    オブザーバビリティ スコープ編集者のロールには、トレース スコープの作成と表示を可能にする非公開権限が含まれています。これらの権限は、カスタム IAM ロールに含めることはできません。

  9. Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。

      gcloud init

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

    デフォルトのスコープを表示して設定する

    コンソール

    オブザーバビリティ スコープを構成するには、そのコンポーネント(デフォルトのログスコープ、指標スコープ、デフォルトのトレース スコープ)を構成します。

    1. Google Cloud コンソールで [ 設定] ページに移動します。

      [設定] に移動

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

    2. Google Cloud コンソールのツールバーで、 Google Cloud プロジェクトを選択します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
    3. デフォルトのログスコープを構成します。

      1. [ログスコープ] タブを選択します。

        既存のログスコープが一覧表示されます。「デフォルト」アイコン のエントリがデフォルトのログスコープです。ログスコープを作成する場合は、[ログスコープを作成] をクリックしてダイアログを完了します。詳細については、ログスコープの作成と管理をご覧ください。

      2. デフォルトとして指定するエントリを見つけて、 [その他] をクリックし、[デフォルトに設定] を選択します。

    4. 指標スコープを構成します。

      1. [指標スコープ] タブを選択します。
      2. [Google Cloud プロジェクト] ペインで [プロジェクトを追加] をクリックし、ダイアログを完了します。詳細については、指標スコープを構成するをご覧ください。
    5. デフォルトのトレース スコープを構成します。

      1. [トレースのスコープ] タブを選択して、次の操作を行います。

        既存のトレース スコープが一覧表示されます。「デフォルト」アイコン のエントリがデフォルトのトレース スコープです。トレース スコープを作成する場合は、[ログスコープを作成] をクリックしてダイアログを完了します。詳細については、トレース スコープの作成と管理をご覧ください。

      2. デフォルトとして指定するエントリを見つけて、 [その他] をクリックし、[デフォルトに設定] を選択します。

    gcloud

    オブザーバビリティ スコープを表示して設定するには、次の操作を行います。

    1. オブザーバビリティ スコープの設定を表示するには、gcloud observability scopes describe コマンドを実行します。

      後述のコマンドデータを使用する前に、次のように置き換えます。

      • OBSERVABILITY_SCOPE_ID: Scope オブジェクトの名前。この値は _Default に設定する必要があります。
      • LOCATION: ロケーション フィールドは global に設定する必要があります。
      • PROJECT_ID: プロジェクトの ID。

      gcloud observability scopes describe コマンドを実行します。

      Linux、macOS、Cloud Shell

      gcloud observability scopes describe OBSERVABILITY_SCOPE_ID \
         --location=LOCATION\
         --project=PROJECT_ID

      Windows(PowerShell)

      gcloud observability scopes describe OBSERVABILITY_SCOPE_ID `
         --location=LOCATION`
         --project=PROJECT_ID

      Windows(cmd.exe)

      gcloud observability scopes describe OBSERVABILITY_SCOPE_ID ^
         --location=LOCATION^
         --project=PROJECT_ID

      コマンドに対するレスポンスは次のようになります。

      logScope: logging.googleapis.com/projects/my-project/locations/global/logScopes/_Default
      traceScope: projects/my-project/locations/global/traceScopes/_Default
      name: projects/my-project/locations/global/scopes/_Default
      

    2. オブザーバビリティ スコープを更新するには、gcloud observability scopes update コマンドを実行します。update コマンドでは、--log-scope フラグを含めて、デフォルトのログスコープを更新できます。

      後述のコマンドデータを使用する前に、次のように置き換えます。

      • OBSERVABILITY_SCOPE_ID: Scope オブジェクトの名前。この値は _Default に設定する必要があります。
      • LOG_SCOPE_FQN_ID: ログスコープの完全修飾 ID。このフィールドの形式は次のとおりです。
        logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/logScopes/LOG_SCOPE_ID

        上記の式で、LOG_SCOPE_ID はログスコープの ID です。例: my-scope

      • LOCATION: ロケーション フィールドは global に設定する必要があります。
      • PROJECT_ID: プロジェクトの ID。

      gcloud observability scopes update コマンドを実行します。

      Linux、macOS、Cloud Shell

      gcloud observability scopes update OBSERVABILITY_SCOPE_ID \
         --log-scope=LOG_SCOPE_FQN_ID\
         --location=LOCATION\
         --project=PROJECT_ID

      Windows(PowerShell)

      gcloud observability scopes update OBSERVABILITY_SCOPE_ID `
         --log-scope=LOG_SCOPE_FQN_ID`
         --location=LOCATION`
         --project=PROJECT_ID

      Windows(cmd.exe)

      gcloud observability scopes update OBSERVABILITY_SCOPE_ID ^
         --log-scope=LOG_SCOPE_FQN_ID^
         --location=LOCATION^
         --project=PROJECT_ID

      たとえば、LOG_SCOPE_ID の値が my-scope の場合、レスポンスは次のようになります。

      Updated scope [_Default].
      logScope: logging.googleapis.com/projects/my-project/locations/global/logScopes/my-scope
      name: projects/my-project/locations/global/scopes/_Default
      

    REST

    API 呼び出しを使用してデフォルトのログスコープまたはデフォルトのトレース スコープを取得して設定するには、オブザーバビリティ スコープを構成します。オブザーバビリティ スコープには、デフォルトのログスコープとデフォルトのトレース スコープがリストで示されます。

    • プロジェクトのデフォルトのオブザーバビリティ スコープを取得するには、projects.locations.scopes.get エンドポイントにリクエストを送信します。パスパラメータを指定する必要があります。レスポンスは、デフォルトのログスコープとデフォルトのトレース スコープをリストで示す Scope オブジェクトです。

    • プロジェクトのデフォルトのオブザーバビリティ スコープを更新するには、projects.locations.scopes.patch エンドポイントにリクエストを送信します。パスパラメータとクエリ パラメータを指定し、Scope オブジェクトを指定する必要があります。クエリ パラメータは、変更されるフィールドを特定します。レスポンスは Scope オブジェクトです。

    どちらのエンドポイントのパスパラメータも次の形式になります。

    projects/PROJECT_ID/locations/LOCATION/scopes/OBSERVABILITY_SCOPE_ID
    

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

    • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
    • LOCATION: ロケーション フィールドは global に設定する必要があります。
    • OBSERVABILITY_SCOPE_ID: Scope オブジェクトの名前。このフィールドは _Default に設定する必要があります。_Default という名前の Scope オブジェクト(自動的に作成される)に、デフォルトのログスコープとデフォルトのトレース スコープに関する情報が格納されます。

    API エンドポイントにコマンドを送信するには、API Explorer を使用します。API Explorer を使用すると、リファレンス ページからコマンドを実行できます。たとえば、現在のデフォルト スコープを取得するには、次の操作を行います。

    1. projects.locations.scopes.get をクリックします。
    2. [この方法を試す] ウィジェットの [名前] フィールドに、次のように入力します。

      projects/PROJECT_ID/locations/global/scopes/_Default
      

      前のフィールドをコピーする前に、PROJECT_ID をプロジェクトの名前に置き換えます。

    3. [Execute] を選択します。

    4. 承認ダイアログで、必要な手順を完了します。

      レスポンスは次の例のようになります。

      {
      "name": "projects/my-project/locations/global/scopes/_Default",
      "logScope": "logging.googleapis.com/projects/my-project/locations/global/logScopes/_Default"
      "traceScope": "projects/my-project/locations/global/traceScopes/_Default"
      }
      

    スコープの詳細

    スコープの詳細については、次のドキュメントをご覧ください。