剖析在 Google Cloud

本頁說明如何剖析在 Google Cloud以外的環境執行的應用程式。

這個情況是指您的應用程式和 Cloud Profiler 代理程式皆在 GCP 以外的環境執行,但您會使用 Cloud Profiler 介面來分析剖析資料。 Google Cloud

您需要有 Google Cloud 專案才能使用 Profiler 介面來分析剖析資料。如果剖析代理程式是在其他地方執行,則其必須要能夠將剖析資料傳回進行分析。為此您必須採取以下動作:

  1. 建立 Google Cloud 專案並啟用 API。
  2. 取得剖析代理程式的憑證,以便上傳剖析資料時使用。
  3. 設定代理程式使用憑證和Google Cloud 專案 ID。

建立 Google Cloud 專案

在 Google Cloud 控制台的專案選擇器頁面中,按一下「建立專案」,開始建立新的 Google Cloud 專案。

Roles required to create a project

To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

前往專案選取器

啟用 Profiler API

  1. 啟用 Cloud Profiler API。

    啟用 API 時所需的角色

    如要啟用 API,您需要服務使用情形管理員 IAM 角色 (roles/serviceusage.serviceUsageAdmin),其中包含 serviceusage.services.enable 權限。瞭解如何授予角色

    啟用 API

  2. 如果畫面顯示「API 已啟用」,代表 API 已啟用。如果未顯示,請按一下「啟用」按鈕。

取得代理程式的憑證

想要取得憑證供代理程式使用,有以下兩種方式:

  • 讓代理程式使用服務帳戶進行私密金鑰驗證
  • 讓代理程式使用應用程式預設的憑證 (ADC)。

使用服務帳戶

如要讓代理程式使用服務帳戶來進行私密金鑰驗證,您必須:

  1. 建立服務帳戶。舉例來說,您可以使用 Google Cloud CLI:

    gcloud iam service-accounts create MY_SVC_ACCT_ID --display-name "my service account"
    

    詳情請參閱「建立服務帳戶」一文。

  2. 授予該服務帳戶 roles/cloudprofiler.agent 角色,以便寫入剖析資料。舉例來說,您可以使用 Google Cloud CLI:

     gcloud projects add-iam-policy-binding GCP_PROJECT_ID \
         --member serviceAccount:MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com \
         --role roles/cloudprofiler.agent
    

    詳情請參閱「為服務帳戶授予角色」一文。

  3. 為服務帳戶建立 JSON 金鑰。舉例來說,您可以使用 Google Cloud CLI:

     gcloud iam service-accounts keys create \
         ~/key.json \
         --iam-account MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com
    

    詳情請參閱「建立服務帳戶金鑰」一文。

  4. 在要剖析代理程式的所在機器上:

    1. 存放一份檔案副本,內附剛建立的 JSON 金鑰。
    2. 將環境變數 GOOGLE_APPLICATION_CREDENTIALS 設為內含 JSON 金鑰檔案的完整格式名稱。執行剖析代理程式的處理程序要能檢視這個環境變數,因此如果您使用指令碼或 Dockerfile 來執行這個處理程序,請務必在其中加入環境變數。

使用應用程式預設憑證

如要讓代理程式使用應用程式的預設憑證,請透過網頁流程取得使用者存取權憑證,然後將憑證放在 Application Default Credentials 程式庫預期的位置。這些憑證將做為服務帳戶的 Proxy 來運作。

如要使用應用程式預設憑證,請執行下列 Google Cloud CLI 指令:

 gcloud auth application-default login

然後按照指令引導您的步驟進行。

將代理程式連結至 Google Cloud 專案

您要設定剖析代理程式指定 Google Cloud 專案的 ID,代理程式才能上傳剖析資料。 其中的運作機制因程式語言而異。

Go

指定額外的參數 ProjectID (於 profiler.Config 物件中指定),如剖析 Go 應用程式一文所述:

 profiler.Config{ProjectID: "GCP_PROJECT_ID", ...}

Java

在 Java 叫用上,指定額外的 Java 代理程式設定標記 cprof_project_id

 -cprof_project_id=GCP_PROJECT_ID

當您的應用程式無法存取 Compute Engine 中繼資料伺服器時,將會顯示與以下內容類似的訊息:

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
如要使系統停止顯示這些訊息,請將 -cprof_zone_name=VALUE 新增至代理程式設定標記,然後重新啟動應用程式。在這個情況中,您可以將 VALUE 改為「test」之類的描述性字串。

Node.js

指定額外的參數 projectID (位於 serviceContext 物件),如「剖析 Node.js 應用程式」一文所述:

projectId: 'GCP_PROJECT_ID',
serviceContext: {
  ...
}

Python

指定額外的參數 project_id (於 start 方法呼叫中指定),如剖析 Python 應用程式一文所述:

googlecloudprofiler.start(..., project_id='GCP_PROJECT_ID')

後續步驟