このドキュメントでは、Google Cloud CLI または Cloud Monitoring API を使用して Google Cloud プロジェクトの指標スコープを構成する方法について説明します。このページは、デベロッパーとシステム管理者を対象としています。
App Hub のアプリケーションと指標スコープ
App Hub ホスト プロジェクトの指標スコープを管理します。このスコープは、Google Cloud コンソールまたは Cloud Monitoring API を使用して管理できます。
Google Cloud はアプリ対応フォルダの指標スコープを管理しますが、指標スコープの割り当てが不足しているために指標スコープへのプロジェクトの追加が失敗した場合を除きます。この場合、割り当ての増加をリクエストしてから、アプリ対応フォルダの管理プロジェクトの指標スコープにプロジェクトを手動で追加できます。詳細については、アプリ対応フォルダの指標スコープをご覧ください。
始める前に
指標スコープとスコーピング プロジェクトの詳細については、指標スコープをご覧ください。
スコーピング プロジェクトとモニタリング対象プロジェクトとして追加する各プロジェクトの Identity and Access Management(IAM)ロールに、モニタリング管理者(
roles/monitoring.admin
)ロールのすべての権限が含まれていることを確認します。詳細については、指標スコープの概要をご覧ください。情報を取得する Cloud Monitoring API の指標スコープ メソッドは同期的です。ただし、状態を変更する API は非同期です。Google Cloud CLI コマンドは、非同期オペレーションが完了するまでブロックされます。非同期 API メソッドが完了したタイミングとそのステータスの判定方法については、非同期 API メソッドをご覧ください。
curl
を使用して Cloud Monitoring API を呼び出す場合、またはこのページのサンプルを使用する場合は、curl
コマンドの設定手順を完了してください。
プロジェクトを指標スコープに追加する
gcloud
Google Cloud プロジェクトを指標スコープに追加するには、gcloud beta monitoring metrics-scopes create
コマンドを実行します。
gcloud beta monitoring metrics-scopes create MONITORED_PROJECT_ID_OR_NUMBER --project=SCOPING_PROJECT_ID_OR_NUMBER
前述のコマンドを実行する前に、次のようにしてください。
指標スコープを変更する Google Cloud プロジェクトの名前または ID を変数 SCOPING_PROJECT_ID_OR_NUMBER に入力します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
モニタリング対象プロジェクトの ID を変数 MONITORED_PROJECT_ID_OR_NUMBER に入力します。形式は
projects/PROJECT_ID_OR_NUMBER
です。
たとえば、次のコマンドは、プロジェクト my-monitored-project
を my-staging-projects
という名前のプロジェクトの指標スコープに追加します。
gcloud beta monitoring metrics-scopes create projects/my-monitored-project --project=my-staging-projects
上記のコマンドに対するレスポンスにより、コマンドが正常に完了したことが確認できます。
Created monitored project [locations/global/metricsScopes/my-staging-projects/projects/my-monitored-project].
curl
Google Cloud プロジェクトを指標スコープに追加するには、locations.global.metricsScopes.projects.create
エンドポイントに POST
リクエストを送信します。
curl -H "Authorization: Bearer ${TOKEN}" \ -H "Content-Type: application/json" -X POST \ -d "{'name': 'locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects/${MONITORED_PROJECT_ID_OR_NUMBER}'}" \ https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects
上の例では、環境変数は次のように定義されています。
MONITORED_PROJECT_ID_OR_NUMBER
には、指標スコープに追加するプロジェクトの ID が格納されます。SCOPING_PROJECT_ID_OR_NUMBER
には、指標スコープが更新されるプロジェクトの ID が格納されます。
この非同期メソッドのレスポンスは Operation
オブジェクトです。
このメソッドを呼び出すアプリケーションは、Operation.done
フィールドの値が true
になるまで、operation.get
エンドポイントをポーリングする必要があります。Operation.done
フィールドが false
に設定されている場合、オペレーションが進行中であることを示します。詳細については、非同期 API メソッドをご覧ください。
モニタリング対象プロジェクトの追加が成功した場合のレスポンスの例を次に示します。
{ "name": "operations/6915efde-1915-400a-ad49-7b62041d9bd2", "metadata": { "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.OperationMetadata", "state": "DONE", ... }, "done": true, "response": { "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.MonitoredProject", "name": "locations/global/metricsScopes/012012012012/projects/678678678678", "provider": "GCP", "providerAccountId": "...", ... } }
上記のレスポンスでは、Operation.done
フィールドが true
に設定されています。この値は、コマンドが完了したことを示します。コマンドが正常に完了したため、Operation.response
フィールドが設定され、その値は MonitoredProject
オブジェクトになります。response.name
フィールドには、スコーピング プロジェクトとモニタリング対象プロジェクトの ID が含まれます。providerAccountId
フィールドには、モニタリング対象プロジェクトの名前が含まれます。
このメソッドを呼び出すと、スコーピング プロジェクトの監査ログにエントリが記録されます。 Google Cloud コンソールがこの API メソッドを呼び出すことはありません。したがって、Google Cloud コンソールの使用時に指標スコープに加えた変更は、監査ログに記録されません。
指標スコープからプロジェクトを削除する
gcloud
指標スコープから Google Cloud プロジェクトを削除するには、gcloud beta monitoring metrics-scopes delete
コマンドを実行します。
gcloud beta monitoring metrics-scopes delete MONITORED_PROJECT_ID_OR_NUMBER --project=SCOPING_PROJECT_ID_OR_NUMBER
前述のコマンドを実行する前に、次のようにしてください。
指標スコープを変更する Google Cloud プロジェクトの名前または ID を変数 SCOPING_PROJECT_ID_OR_NUMBER に入力します。App Hub 構成の場合は、App Hub ホスト プロジェクトまたはアプリ対応フォルダの管理プロジェクトを選択します。
モニタリング対象プロジェクトの ID を変数 MONITORED_PROJECT_ID_OR_NUMBER に入力します。形式は
projects/PROJECT_ID_OR_NUMBER
です。
たとえば、次のコマンドは、my-staging-projects
という名前のプロジェクトの指標スコープからプロジェクト my-monitored-project
を削除します。
gcloud beta monitoring metrics-scopes delete projects/my-monitored-project --project=my-staging-projects
上記のコマンドに対するレスポンスにより、コマンドが正常に完了したことが確認できます。
Deleted monitored project [locations/global/metricsScopes/my-staging-projects/projects/my-monitored-project].
スコーピング プロジェクトが MONITORED_PROJECT_ID_OR_NUMBER 変数で指定されたプロジェクトをモニタリングしていない場合は、次のエラーが報告されます。
NOT_FOUND: Requested entity was not found.
curl
指標スコープから Google Cloud プロジェクトを削除するには、locations.global.metricsScopes.projects.delete
エンドポイントに DELETE
リクエストを送信します。
curl -H "Authorization: Bearer ${TOKEN}" -X DELETE \ https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}/projects/${MONITORED_PROJECT_ID_OR_NUMBER}
上の例では、環境変数は次のように定義されています。
MONITORED_PROJECT_ID_OR_NUMBER
には、指標スコープから削除するプロジェクトの ID が格納されます。SCOPING_PROJECT_ID_OR_NUMBER
には、指標スコープが更新されるプロジェクトの ID が格納されます。
この非同期メソッドのレスポンスは Operation
オブジェクトです。
このメソッドを呼び出すアプリケーションは、Operation.done
フィールドの値が true
になるまで、operation.get
エンドポイントをポーリングする必要があります。Operation.done
フィールドが false
に設定されている場合、オペレーションが進行中であることを示します。詳細については、非同期 API メソッドをご覧ください。
次の例では、モニタリング対象プロジェクトの削除が成功した場合のレスポンスを示します。
{ "name": "operations/4367ff34-0ff0-4767-b8d3-0638e30f077c", "metadata": { "@type": "type.googleapis.com/google.monitoring.metricsscope.v1.OperationMetadata", "state": "DONE", ... }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
上記のレスポンスでは、Operation.done
フィールドが true
に設定されています。この値は、コマンドが完了したことを示します。コマンドは正常に完了したため、Operation.response
フィールドが設定され、@type
フィールドが含まれています。
このメソッドを呼び出すと、スコーピング プロジェクトの監査ログにエントリが記録されます。 Google Cloud コンソールがこの API メソッドを呼び出すことはありません。したがって、Google Cloud コンソールの使用時に指標スコープに加えた変更は、監査ログに記録されません。
プロジェクトが含まれるすべての指標スコープの一覧を取得する
Google Cloud プロジェクトによって保存されたデータを表示できるリソースを確認するには、プロジェクトを含むすべての指標スコープの一覧を取得し、それらのスコープの詳細を確認します。このセクションでは、特定のGoogle Cloud プロジェクトを含む指標スコープの一覧を取得する方法について説明します。
gcloud
Google Cloud プロジェクトの指標を表示できる指標スコープのリストを取得するには、gcloud beta monitoring metrics-scopes list
コマンドを実行します。
gcloud beta monitoring metrics-scopes list MONITORED_PROJECT_ID_OR_NUMBER
コマンドを実行する前に、モニタリング対象プロジェクトの ID を変数 MONITORED_PROJECT_ID_OR_NUMBER に入力します。形式は projects/PROJECT_ID_OR_NUMBER
です。
たとえば、プロジェクト my-project
を含む指標スコープのリストを取得するには、次のコマンドを実行します。
gcloud beta monitoring metrics-scopes list projects/my-project
次のレスポンスは、プロジェクト my-project
が 2 つの指標スコープに含まれていることを示しています。
metricsScopes:
- createTime: '2018-08-06T17:13:42Z'
name: locations/global/metricsScopes/012345012345
updateTime: '2018-08-18T16:20:37.032928Z'
- createTime: '2021-04-13T15:37:26.869Z'
name: locations/global/metricsScopes/9876543210
updateTime: '2021-04-13T15:37:27.284239Z'
指標スコープの詳細情報を取得するには、gcloud beta monitoring metrics-scopes describe
コマンドを実行します。
curl
プロジェクトの指標を表示できる指標スコープのリストを取得するには、locations.global.metricsScopes.listMetricsScopesByMonitoredProject
エンドポイントに GET
リクエストを送信し、プロジェクトを指定するクエリ パラメータを含めます。
curl -H "Authorization: Bearer ${TOKEN}" \ https://monitoring.googleapis.com/v1/locations/global/metricsScopes:listMetricsScopesByMonitoredProject?monitored_resource_container=projects/${PROJECT_ID_OR_NUMBER}
前述の例では、環境変数 PROJECT_ID_OR_NUMBER
に、指標スコープの対象がクエリされるプロジェクトの ID が格納されます。
成功した場合、レスポンスは MetricsScope
オブジェクトの配列です。
この方法では、スコーピング プロジェクトの監査ログにエントリは書き込まれません。これらのアクションを監査ログに記録するには、Cloud Resource Manager API のデータ読み取りを有効にします。詳しくは、データアクセス監査ログの構成をご覧ください。
指標のスコープに関する詳細情報を取得する
このセクションでは、特定の指標スコープの詳細を確認する方法について説明します。
gcloud
指標スコープの詳細情報を取得するには、gcloud beta monitoring metrics-scopes describe
コマンドを実行します。
gcloud beta monitoring metrics-scopes describe METRICS_SCOPE_ID
コマンドを実行する前に、指標スコープの完全修飾名を変数 METRICS_SCOPE_ID に入力します。完全修飾名の例を次に示します。
locations/global/metricsScopes/012345012345
レスポンスの例を次に示します。この例では、指標スコープに 1 つのプロジェクトが含まれており、指標スコープとプロジェクトの ID は同じです。
createTime: '2018-08-06T17:13:42Z'
monitoredProjects:
- createTime: '2018-08-06T17:13:42Z'
name: locations/global/metricsScopes/012345012345/projects/012345012345
name: locations/global/metricsScopes/012345012345
updateTime: '2018-08-18T16:20:37.032928Z'
ID から Google Cloud プロジェクトを識別するには、gcloud projects list
コマンドを実行して、プロジェクト ID でフィルタします。たとえば、プロジェクト 012345012345
の名前を取得するには、次のコマンドを実行します。
gcloud projects list --filter="012345012345" --format="value(NAME)"
curl
指標スコープに関する情報を取得するには、locations.global.metricsScopes.get
エンドポイントに GET
リクエストを送信します。
curl -H "Authorization: Bearer ${TOKEN}" \ https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}
前述の例では、環境変数 SCOPING_PROJECT_ID_OR_NUMBER
に、指標スコープがクエリされるプロジェクトの ID が格納されます。
成功した場合、レスポンスは MetricsScope
オブジェクトになります。
この方法では、スコーピング プロジェクトの監査ログにエントリは書き込まれません。これらのアクションを監査ログに記録するには、Cloud Resource Manager API のデータ読み取りを有効にします。詳しくは、データアクセス監査ログの構成をご覧ください。
非同期 API メソッド
モニタリング対象プロジェクトを指標スコープに追加するコマンドなど、システムの状態を変更する Cloud Monitoring API の指標スコープ メソッドはすべて非同期です。これらのコマンドでは、コマンド レスポンスが Operation
オブジェクトです。
非同期 API メソッドを呼び出すアプリは、Operation.done
フィールドの値が true
になるまで、operation.get
エンドポイントをポーリングする必要があります。
done
がfalse
の場合は、オペレーションが進行中です。ステータス情報を更新するには、
operation.get
エンドポイントにGET
リクエストを送信します。curl -H "Authorization: Bearer ${TOKEN}" \ https://monitoring.googleapis.com/v1/${OPERATION_NAME}
上記のコマンドでの
OPERATION_NAME
は、Operation.name
フィールドの値を格納する環境変数です。done
がtrue
の場合、オペレーションは完了し、error
フィールドまたはresponse
フィールドが次のように設定されます。error
: この値が設定された場合、非同期処理が失敗しています。このフィールドの値は、gRPC エラーコードとエラー メッセージを含むStatus
オブジェクトです。response
: この値が設定されている場合、非同期オペレーションが正常に完了し、値に結果が反映されています。
curl
コマンドの設定
このセクションでは、このドキュメントの curl コマンドの作成に使用した設定について説明します。このページの各 curl
コマンドには、一連の引数が含まれ、その後に API リソースの URL が続きます。
curl -H "Authorization: Bearer ${TOKEN}" <other_args> \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/<resource>
curl
コマンドの作成を簡素化するために、次の環境変数を設定します。
スコーピング プロジェクト ID や番号を格納する環境変数を作成します。App Hub を使用している場合は、この変数を App Hub ホスト プロジェクトの ID またはアプリ対応フォルダの管理プロジェクトの ID に設定します。
SCOPING_PROJECT_ID_OR_NUMBER=SCOPING_PROJECT_ID_OR_NUMBER
省略可。モニタリング対象プロジェクトを追加または削除する場合は、モニタリング対象プロジェクトの ID または番号を使用して環境変数を構成します。
MONITORED_PROJECT_ID_OR_NUMBER=MONITORED_PROJECT_ID_OR_NUMBER
Google Cloud CLI で認証を行います。
gcloud auth login
省略可。各
gcloud
コマンドでのプロジェクト ID の指定を不要にするには、gcloud CLI を使用してプロジェクト ID をデフォルトとして設定します。gcloud config set project ${SCOPING_PROJECT_ID_OR_NUMBER}
認可トークンを作成し、環境変数にキャプチャします。
TOKEN=`gcloud auth print-access-token`
トークンは期間限定で有効です。動作していたコマンドに急に未認証と報告された場合は、このコマンドを再発行します。
アクセス トークンがあることを確認するには、
TOKEN
変数をエコーします。echo ${TOKEN} ya29.GluiBj8o....
HTTP リクエストのタイプ(たとえば、-X DELETE
)を指定する場合など、他の引数を指定する必要がある場合もあります。デフォルトのリクエストは GET
であるため、例では指定していません。
次のステップ
Terraform で Google Cloud を使用する方法については、次のリソースをご覧ください。