ログスコープを作成、管理する

このドキュメントでは、ログスコープを作成して管理する方法について説明します。ログスコープを使用すると、表示または分析するログエントリを効率的に見つけることができます。プロジェクト、フォルダ、組織で発生したログエントリのみを表示して分析する場合は、このドキュメントの対象外です。ただし、ログシンクを使用してログを他のプロジェクトまたはユーザー定義のログバケットに転送する場合や、ログビューを使用する場合は、このドキュメントの情報が特定のログエントリを効率的に見つける際に役立ちます。

このドキュメントでは、ログの表示方法については説明しません。このトピックの詳細については、ログ エクスプローラを使用してログを表示するをご覧ください。

ログスコープについて

ログスコープは、一連のリソースのリストを取得するプロジェクト レベルの永続的なリソースです。これらのリソースには、プロジェクト、フォルダ、組織、ログビューを含めることができます。たとえば、本番環境で使用されるリソースを含むプロジェクトの一覧を取得するログスコープを定義できます。また、特定のリソースタイプのログエントリを含むログビューの一覧を取得するログスコープを定義することもできます。

Trusted Cloud プロジェクト、フォルダ、または組織リソースを作成すると、Logging は _Default という名前のログスコープを作成します。このスコープには、作成されたプロジェクト、フォルダ、または組織が含まれます。検索対象のリソースが Trusted Cloud プロジェクト、フォルダ、または組織の場合、リソースで発生し、ログバケットに保存されるログエントリが結果に含まれます。ログバケットは任意のプロジェクトに置くことができます。プロジェクトを検索すると、別のプロジェクトのシンクによってプロジェクトに転送され、ログバケットに保存されるログエントリも結果に含まれます。

ログスコープを作成できます。作成したログスコープの編集と削除も可能です。ただし、_Default というログスコープは編集または削除できません。

ログスコープを使用すると、[ログ エクスプローラ] ページで、ログデータの検索対象となるリソースを制御できます。このページを開いてログスコープを選択すると、そのスコープに含まれるリソースが検索され、表示が更新されます。

プロジェクトの場合、[ログ エクスプローラ] ページが開いたときに検索されるリソースのセットが、デフォルトのログスコープによって決まります。ただし、ストレージからフェッチされるログエントリは、検索対象リソースの Identity and Access Management(IAM)ロールと期間の設定によって決まります。プロジェクトが作成されると、_Default という名前のログスコープがデフォルトのログスコープとして指定されます。

ログスコープと一元的なログストレージの違い

一元的なログストレージとログスコープの両方を使用すると、異なるプロジェクトで生成されたログデータを表示できます。

ログストレージを一元化する場合は、組織またはフォルダ内のシンクを構成して、ログエントリを単一のストレージ ロケーションに転送します。一元的なストレージでは、ログデータを 1 か所でクエリできるため、傾向検索や問題調査時のクエリを簡素化できます。セキュリティの観点からみると、ストレージ ロケーションが 1 つになるため、セキュリティ アナリストのタスクも簡素化されます。

ログスコープに含まれているリソースに対してクエリが実行されると、個々のクエリ結果が結合されます。ログスコープを使用すると、異なるロケーションに保存されているログデータを読み取り時に集約できます。ただし、ログスコープを使用して、一元的なログバケットの 1 つ以上のログビューに対する読み取りアクセス権を付与することもできます。

[ログ エクスプローラ] ページを開くと、デフォルトのログスコープに含まれているリソースに対してクエリが実行されます。そのため、通常表示するデータがページに表示されるように、デフォルトのスコープを構成します。たとえば、ログビューのリストを表示するようにデフォルトのログスコープを設定して、クエリを実行すると、App Hub アプリケーションのログデータが返されます。

ベスト プラクティス

ログスコープを使用すると、構成を定義し、再利用できるように保存しておくことができます。複雑な検索構成の場合は、ログスコープを作成することをおすすめします。

たとえば、問題のトラブルシューティングで、チームが所有するすべての仮想マシン(VM)インスタンスのログエントリを表示したいとします。この場合、次のように対応します。

  1. 表示するログエントリが複数のログバケットと複数のプロジェクトに保存されていることがわかりました。ほとんどのログバケットには、分析するログエントリを含むログビューが存在します。ログビューが存在しない場合は、作成できます。

  2. 今後同様のトラブルシューティング タスクが発生する可能性があるため、ログスコープを作成することにしました。

  3. Trusted Cloud コンソールで [ログ エクスプローラ] ページを開き、[範囲を絞り込む] メニューを使用して、新しいログスコープを選択します。

  4. ログエントリを確認し、調査していた問題の解決に必要な情報を探します。

  5. 問題を解決したら、障害の原因を同僚と共有します。また、今後も同様の障害が発生することが予想されるため、自分自身や障害を調査する担当者が関連するログエントリをすばやく見つけられるように、ログスコープを作成しました。

App Hub アプリケーションとログスコープ

App Hub アプリケーションは、ログデータを複数のプロジェクトに書き込む場合があります。ログデータは、そのデータが生成されたプロジェクトに保存されている場合があります。また、組織管理者が一元的なストレージを構成している場合もあります。アプリケーションのログデータを表示するには、ログスコープを作成し、アプリケーションのログデータを保存するプロジェクトまたはログビューを一覧表示するように構成してから、デフォルトのログスコープとして構成します。これらの手順を完了すると、アプリケーションによって書き込まれたデータが [ログ エクスプローラ] ページに自動的に表示されます。このデータは、異なるプロジェクトまたは一元的なログバケットに保存されている場合でも表示されます。

ログデータを表示するプロジェクトにカスタム ログスコープを作成します。このプロジェクトは、App Hub ホスト プロジェクトか、アプリ対応フォルダの管理プロジェクトです。たとえば、フォルダの表示名が My Folder の場合、管理プロジェクトの表示名は My Folder-mp になります。

制限事項

  • _Default という名前のログスコープを削除または変更することはできません。
  • デフォルトのログスコープをサポートするのは、 Trusted Cloud プロジェクトのみです。
  • ユーザー定義のログスコープにフォルダや組織を追加することはできません。
  • ログスコープは global ロケーションに作成されます。

始める前に

  • ログスコープの作成と表示に必要な権限を取得するには、プロジェクト、フォルダ、組織に対するログ構成書き込みroles/logging.configWriter)の IAM ロールを付与するように管理者へ依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

    この事前定義ロールには、ログスコープの作成と表示に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    ログスコープを作成して表示するには、次の権限が必要です。

    • ログスコープを作成、管理する: logging.logScopes.{create, delete, get, list, update}

    カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

ログスコープを一覧表示する

gcloud

プロジェクトのログスコープの一覧を取得するには、gcloud logging scopes list コマンドを使用します。

 gcloud logging scopes list --project=PROJECT_ID

コマンドを実行する前に、次のフィールドを更新します。

  • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。

プロジェクトのログスコープの詳細を取得するには、gcloud logging scopes describe コマンドを使用します。

 gcloud logging scopes describe LOG_SCOPE_ID --project=PROJECT_ID

コマンドを実行する前に、次のフィールドを更新します。

  • PROJECT_ID: プロジェクトの ID。
  • LOG_SCOPE_ID: ログスコープの ID。例: my-scope

Terraform

Terraform を使用してログスコープの作成と変更を行うことができます。ただし、Terraform でログスコープの一覧を取得することはできません。

REST

Cloud Logging API には、リソースのログスコープの一覧を取得するコマンドや、特定のログスコープの詳細を報告するコマンドがあります。コマンドの一覧については、API リファレンス ドキュメントをご覧ください。

Trusted Cloud プロジェクトの場合は、次のコマンドを使用します。

上記のコマンドの parent フィールドの構文は次のとおりです。

projects/PROJECT_ID/locations/LOCATION_ID

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

  • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
  • LOCATION_IDglobal に設定する必要があります。

ログスコープを作成する

プロジェクトごとに作成できるログスコープは 100 個までです。ログスコープには、ログビューとプロジェクトを合わせて 100 個まで含めることができますが、プロジェクトは 5 つまでです。ログスコープにフォルダや組織を追加することはできません。

gcloud

プロジェクトにログスコープを作成するには、gcloud logging scopes create コマンドを使用します。

 gcloud logging scopes create LOG_SCOPE_ID --project=PROJECT_ID \
   --description=DESCRIPTION \
   --resource-names=RESOURCE_NAMES

コマンドを実行する前に、次のフィールドを更新します。

  • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
  • LOG_SCOPE_ID: ログスコープの ID。例: my-scope
  • DESCRIPTION: 省略可。ログスコープの説明。説明を文字列としてフォーマットします。

  • RESOURCE_NAMES: プロジェクトまたはログビューの完全修飾名のカンマ区切りのリスト。たとえば、ログスコープに my-project を含めるには、projects/my-project を指定します。

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。詳細については、Terraform プロバイダのリファレンス ドキュメントをご覧ください。

Terraform を使用してプロジェクト、フォルダ、組織にログスコープを作成するには、Terraform リソース google_logging_log_scope を使用します。

コマンドで、次のフィールドを設定します。

  • parent: プロジェクト、フォルダ、または組織の完全修飾名。たとえば、このフィールドを "projects/PROJECT_ID" に設定します。ここで、PROJECT_ID は Trusted Cloud プロジェクトの ID です。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
  • locations: "global" に設定します。
  • name: ログスコープの完全修飾名に設定します。プロジェクトの場合、このフィールドの形式は次のとおりです。

    "projects/PROJECT_ID/locations/global/logScopes/LOG_SCOPE_ID"
    

    上記の式で、LOG_SCOPE_ID はログスコープの名前(production など)です。

  • resource_names: プロジェクトとログビューの配列。各プロジェクトとログビューは完全修飾名で指定します。

  • description: 簡単な説明。たとえば、「本番環境リソースのスコープ」などです。

REST

Cloud Logging API は、フォルダまたは組織でのログスコープの作成もサポートしています。詳しくは、API リファレンス ドキュメントをご覧ください。

Trusted Cloud プロジェクトの場合は、次のコマンドを使用します。

上記のコマンドの parent フィールドの構文は次のとおりです。

projects/PROJECT_ID/locations/LOCATION_ID

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

  • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
  • LOCATION_IDglobal に設定する必要があります。

ログスコープの変更または削除

gcloud

プロジェクトのログスコープに含まれるリソースのリストの説明を変更するには、gcloud logging scopes update コマンドを使用します。

 gcloud logging scopes update LOG_SCOPE_ID --project=PROJECT_ID \
   --description=DESCRIPTION \
   --resource-names=RESOURCE_NAMES

コマンドを実行する前に、次のフィールドを更新します。

  • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
  • LOG_SCOPE_ID: ログスコープの ID。例: my-scope
  • DESCRIPTION: ログスコープの説明。説明を文字列としてフォーマットします。ログスコープの説明を変更しない場合は、このフィールドを省略します。

  • RESOURCE_NAMES: プロジェクトまたはログビューの完全修飾名のカンマ区切りのリスト。リソースのリストを変更しない場合は、このフィールドを省略します。

プロジェクトのログスコープを削除するには、gcloud logging scopes delete コマンドを使用します。

 gcloud logging scopes delete LOG_SCOPE_ID --project=PROJECT_ID

コマンドを実行する前に、次のフィールドを更新します。

  • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
  • LOG_SCOPE_ID: ログスコープの ID。例: my-scope

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。詳細については、Terraform プロバイダのリファレンス ドキュメントをご覧ください。

Terraform を使用してプロジェクト、フォルダ、組織にログスコープを変更するには、Terraform リソース google_logging_log_scope を使用します。

REST

Cloud Logging API には、ログスコープを変更または削除できるコマンドがあります。コマンドの一覧については、API リファレンス ドキュメントをご覧ください。

Trusted Cloud プロジェクトの場合は、次のコマンドを使用します。

上記のコマンドの parent フィールドの構文は次のとおりです。

projects/PROJECT_ID/locations/LOCATION_ID/logScopes/LOG_SCOPE_ID

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

  • PROJECT_ID: プロジェクトの ID。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ管理用フォルダの管理プロジェクトを選択します。
  • LOCATION_IDglobal に設定する必要があります。
  • LOG_SCOPE_ID: ログスコープの ID。例: my-scope

次のステップ