API を使用して指標のスコープを管理する

このドキュメントでは、Cloud Monitoring API の指標のスコープ メソッドを使用して Google Cloud プロジェクトの指標のスコープを管理する方法について説明します。このページはデベロッパーとシステム管理者を対象としています。

AWS アカウントを Google Cloud プロジェクトの指標スコープに接続するには、Google Cloud Console を使用する必要があります。詳細については、AWS アカウントの指標の表示をご覧ください。

はじめに

  • 指標スコープとスコープ対象プロジェクトの詳細については、指標スコープをご覧ください。

  • スコープ プロジェクトに関する Identity and Access Management(IAM)のロールで、プロジェクトの指標スコープを変更できることを確認してください。

  • モニタリング対象プロジェクトとして追加するプロジェクトごとに、IAM ロールでプロジェクトの指標スコープを変更できることを確認してください。必要な IAM ロールの詳細については、指標スコープ構成をご覧ください。

  • 情報を取得する Cloud Monitoring API の指標のスコープ メソッドは同期的です。ただし、状態を変更する API は非同期です。非同期メソッドが完了したタイミングとそのステータスの判定方法については、非同期 API メソッドをご覧ください。

curl コマンド パラメータ

指標スコープ API を直接呼び出すことができます。このページでは、curl を使用するサンプル コマンドについて説明します。各 curl コマンドには一連の引数が含まれ、API リソースの URL がそれに続きます。

curl -H "Authorization: Bearer ${TOKEN}" <other_args> \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/<resource>

このページの例では、次の環境変数を使用します。

  • TOKEN: 認証トークンを格納します。
  • SCOPING_PROJECT_ID_OR_NUMBER: 指標スコープのスコープ プロジェクトのプロジェクト ID または番号を格納します。
  • MONITORED_PROJECT_ID_OR_NUMBER: 指標スコープに追加する、または指標スコープから削除するプロジェクトのプロジェクト ID または番号を保存します。

HTTP リクエストのタイプ(たとえば、-X DELETE)を指定する場合など、他の引数を指定する必要がある場合もあります。デフォルトのリクエストは GET であるため、例では指定していません。

この例に必要な設定については、curl コマンドの設定をご覧ください。

指標のスコープの取得

指標スコープに関する情報を取得するには、GET リクエストを locations.global.metricsScopes.get エンドポイントに送信します。

curl -H "Authorization: Bearer ${TOKEN}" \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes/${SCOPING_PROJECT_ID_OR_NUMBER}

成功した場合、レスポンスは MetricsScope オブジェクトです。

この方法では、スコーピング プロジェクトの監査ログにエントリが書き込まれません。これらのアクションを監査ログに記録するには、Cloud Resource Manager API の [データ読み取り] を有効にします。詳しくは、データアクセス監査ログの構成をご覧ください。

プロジェクトが含まれるすべての指標スコープを一覧表示する

プロジェクトの指標を表示できる指標スコープのリストを取得するには、GET リクエストを locations.global.metricsScopes.listMetricsScopesByMonitoredProject エンドポイントに送信し、クエリを含めます。パラメータ。プロジェクトを指定します。

curl -H "Authorization: Bearer ${TOKEN}" \
https://monitoring.googleapis.com/v1/locations/global/metricsScopes:listMetricsScopesByMonitoredProject?monitored_resource_container=projects/${PROJECT_ID_OR_NUMBER}

成功した場合、レスポンスは MetricsScope オブジェクトの配列です。

この方法では、スコーピング プロジェクトの監査ログにエントリが書き込まれません。これらのアクションを監査ログに記録するには、Cloud Resource Manager API の [データ読み取り] を有効にします。詳しくは、データアクセス監査ログの構成をご覧ください。

指標を指標スコープに追加する

Google Cloud プロジェクトを指標スコープに追加するには、POST リクエストを locations.global.metricsScopes.projects.create エンドポイントに送信します。次の例では、環境変数 MONITORED_PROJECT_ID_OR_NUMBER で識別されるプロジェクトがモニタリング対象プロジェクトとして追加されます。

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

この非同期メソッドのレスポンスは、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 フィールドには、モニタリング対象プロジェクトの名前が一覧表示されます。

このメソッドを呼び出すと、スコープ プロジェクトの監査ログにエントリが記録されます。Cloud Console を使用してプロジェクトを指標スコープに追加した場合、そのアクションは監査ログに記録されません。Cloud Console では、この API メソッドは呼び出されません。

指標のスコープからプロジェクトを削除する

指標スコープから Google Cloud プロジェクトを削除するには、DELETE リクエストを locations.global.metricsScopes.projects.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}

この非同期メソッドへのレスポンスは、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 フィールドが含まれています。

このメソッドを呼び出すと、スコープ プロジェクトの監査ログにエントリが記録されます。Cloud Console を使用してプロジェクトを指標スコープから削除した場合、そのアクションは監査ログに記録されません。Cloud Console では、この API メソッドは呼び出されません。

非同期 API メソッド

システムの状態を変更する Cloud Monitoring API のすべての指標スコープ メソッド(モニタリング対象プロジェクトに指標スコープを追加するコマンドなど)は非同期です。これらのコマンドで、コマンド レスポンスは Operation オブジェクトです。

非同期 API メソッドを呼び出すアプリケーションは、Operation.done フィールドの値が true になるまで operation.get エンドポイントをポーリングする必要があります。

  • donefalse の場合、オペレーションは進行中です。

    ステータス情報を更新するには、operation.get エンドポイントに GET リクエストを送信します。

    curl -H "Authorization: Bearer ${TOKEN}" \
    https://monitoring.googleapis.com/v1/${OPERATION_NAME}
    

    前のコマンドでは、OPERATION_NAMEOperation.name フィールドの値を格納する環境変数です。

  • donetrue の場合、オペレーションは完了しており、error フィールドまたは response フィールドのいずれかが設定されています。

    • error: 設定すると、非同期オペレーションは失敗します。このフィールドの値は、gRPC エラーコードとエラー メッセージを含む Status オブジェクトです。
    • response: 設定すると、非同期オペレーションが正常に完了し、値に結果が反映されます。

curl コマンドの設定

このセクションでは、このドキュメントの curl コマンドの作成に使用する設定について説明します。

curl コマンドの作成を簡素化するために、次の環境変数を設定します。

  1. スコープ プロジェクト ID または番号を格納する環境変数を作成します。

    SCOPING_PROJECT_ID_OR_NUMBER=a-sample-project
    
  2. 省略可。モニタリング対象プロジェクトを追加または削除する場合は、モニタリング対象プロジェクトの ID または番号を使用して環境変数を構成します。

    MONITORED_PROJECT_ID_OR_NUMBER=a-monitored-project
    
  3. Cloud SDK に対して認証を行います。

    gcloud auth login
    
  4. 省略可。各 gcloud コマンドでのプロジェクト ID の指定を不要にするには、Cloud SDK を使用してプロジェクト ID をデフォルトとして設定します。

    gcloud config set project ${SCOPING_PROJECT_ID_OR_NUMBER}
    
  5. 認証トークンを作成し、環境変数にキャプチャします。

    TOKEN=`gcloud auth print-access-token`
    

    トークンは一定期間有効です。動作していたコマンドに急に未認証と報告された場合は、このコマンドを再発行します。

  6. アクセス トークンがあることを確認するには、TOKEN 変数をエコーします。

    echo ${TOKEN}
    ya29.GluiBj8o....