使用 API 設定指標範圍

本文說明如何使用 Google Cloud CLI 或 Cloud Monitoring API,設定 Google Cloud 專案的指標範圍。本頁面適用對象為開發人員和系統管理員。

您也可以使用 Terraform 設定指標範圍。詳情請參閱 Terraform 登錄檔。google_monitoring_monitored_project

App Hub 應用程式和指標範圍

您可以管理 App Hub 主專案的指標範圍。您可以使用Google Cloud 控制台Cloud Monitoring API 管理這個範圍。

Google Cloud 管理已啟用應用程式的資料夾指標範圍,除非指標範圍配額用盡,導致專案無法新增至指標範圍。在這種情況下,您可以要求增加配額,然後手動將專案新增至已啟用應用程式的資料夾管理專案指標範圍。詳情請參閱「已啟用應用程式的資料夾指標範圍」。

事前準備

  • 如果您不熟悉「指標範圍」和「範圍界定專案」這兩個詞彙,請參閱「指標範圍」。

  • 請確認您在範圍界定專案,以及要新增至指標範圍或從指標範圍移除的每個專案中,具備 Monitoring 管理員 (roles/monitoring.admin) 角色的所有權限。詳情請參閱「指標範圍設定」。

  • Cloud Monitoring API 的指標範圍方法會同步擷取資訊,但變更狀態的 API 則為非同步。Google Cloud CLI 指令會封鎖,直到非同步作業完成為止。如要瞭解如何判斷非同步 API 方法何時完成,以及如何判斷其狀態,請參閱「非同步 API 方法」。

  • 如果您打算使用 curl 叫用 Cloud Monitoring API,或是想使用本頁面的範例,請完成 curl 指令設定步驟。

將專案新增至指標範圍

gcloud

如要將專案新增至指標範圍,請執行 gcloud beta monitoring metrics-scopes create 指令: Google Cloud

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 主專案或已啟用應用程式的資料夾管理專案。

  • 在變數 MONITORED_PROJECT_ID_OR_NUMBER 中輸入受監控專案的 ID。格式為 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.get 端點,直到 Operation.done 欄位的值為 true 為止。如果 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": "G​C​P",
    "providerAccountId": "...",
    ...
  }
}

在先前的回應中,Operation.done 欄位設為 true。這個值表示指令已完成。由於指令已順利完成,因此 Operation.response 欄位已設定,且其值為 MonitoredProject 物件。response.name 欄位包含範圍界定專案和受監控專案的 ID。「providerAccountId」欄位會列出受監控專案的名稱。

呼叫這個方法會在範圍專案的稽核記錄中產生項目。 Google Cloud 控制台不會叫用這個 API 方法。 因此,使用Google Cloud 控制台修改指標範圍時,稽核記錄不會記錄這些變更。

從指標範圍中移除專案

gcloud

如要從指標範圍中移除專案,請執行 gcloud beta monitoring metrics-scopes delete 指令: Google Cloud

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 主專案或已啟用應用程式的資料夾管理專案。

  • 在變數 MONITORED_PROJECT_ID_OR_NUMBER 中輸入受監控專案的 ID。格式為 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

如要從指標範圍中移除專案,請將 DELETE 要求傳送至 locations.global.metricsScopes.projects.delete 端點: Google Cloud

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.get 端點,直到 Operation.done 欄位的值為 true 為止。如果 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

執行指令前,請先在變數 MONITORED_PROJECT_ID_OR_NUMBER 中輸入受監控專案的 ID。格式為 projects/PROJECT_ID_OR_NUMBER

舉例來說,如要列出包含專案 my-project 的指標範圍,請執行下列指令:

gcloud beta monitoring metrics-scopes list projects/my-project

下列回應表示專案 my-project 包含在兩個指標範圍中:

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

如要取得可查看專案指標的指標範圍清單,請將 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}

在上述範例中,環境變數 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

以下是回應範例。在這個範例中,指標範圍包含一個專案,且指標範圍和專案的 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 識別專案,請執行 gcloud projects list 指令,並依專案 ID 篩選。 Google Cloud 舉例來說,如要取得專案 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.get 端點,直到 Operation.done 欄位的值為 true

  • 如果 donefalse,表示作業正在進行中。

    如要重新整理狀態資訊,請將 GET 要求傳送至 operation.get 端點:

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

    在先前的指令中,OPERATION_NAME 是儲存 Operation.name 欄位值的環境變數。

  • 如果 donetrue,代表作業已完成,且 errorresponse 欄位已設定:

    • error:設定後,非同步作業就會失敗。這個欄位的值是 Status 物件,內含 gRPC 錯誤代碼和錯誤訊息。
    • response:設定後,非同步作業會順利完成,且值會反映結果。

curl 指令設定

本節說明用於建立本文件 curl 指令的設定。本頁的每個 curl 指令都包含一組引數,後面接著 API 資源的網址:

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

設定這些環境變數,簡化 curl 指令的建立作業:

  1. 建立環境變數,用於儲存範圍界定專案 ID 或編號。如果您使用 App Hub,請將這個變數設為 App Hub 主專案的 ID,或是啟用應用程式的資料夾管理專案 ID:

    SCOPING_PROJECT_ID_OR_NUMBER=SCOPING_PROJECT_ID_OR_NUMBER
    
  2. (選用步驟) 如要新增或移除受監控專案,請使用受監控專案 ID 或編號設定環境變數:

    MONITORED_PROJECT_ID_OR_NUMBER=MONITORED_PROJECT_ID_OR_NUMBER
    
  3. 驗證 Google Cloud CLI:

    gcloud auth login
    
  4. (選用步驟) 為避免每次執行 gcloud 指令時都必須指定專案 ID,請使用 gcloud CLI 將專案 ID 設為預設值:

    gcloud config set project ${SCOPING_PROJECT_ID_OR_NUMBER}
    
  5. 建立授權權杖,並將其擷取至環境變數:

    TOKEN=`gcloud auth print-access-token`
    

    代幣有使用期限,如果原本可用的指令突然回報您未通過驗證,請重新發出這個指令。

  6. 如要確認您已取得存取權杖,請回應 TOKEN 變數:

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

您可能也必須指定其他引數,例如指定 HTTP 要求的類型 (例如 -X DELETE)。預設要求為 GET,因此範例不會指定這項引數。

後續步驟

如要瞭解如何搭配使用 Google Cloud 與 Terraform,請參閱下列資源: