在 Google Cloud Platform 以外的環境剖析程式碼

本頁面說明如何在 Google Cloud Platform 以外的環境剖析程式碼。

這個情況是指您的程式碼和 Stackdriver Profiler 代理程式將在非 GCP 環境中執行,但您會使用 Stackdriver Profiler 介面來分析剖析資料。

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

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

建立 Google Cloud Platform 專案

在 GCP 主控台中,前往「Manage resources」(管理資源) 頁面,並建立專案。

前往「Manage resources」(管理資源) 頁面

啟用 Profiler API

在新專案的 GCP 主控台中,前往「APIs & Services」(API 和服務)頁面:

  1. 前往「APIs & Services」(API 和服務) 資訊主頁:

    前往 API 和服務頁面

  2. 按一下 [Add APIs and Services] (新增 API 和服務) 按鈕。

    新增 API 和服務

  3. 搜尋「Profiler API」

  4. 選取搜尋結果中的 [Stackdriver Profiler API]

  5. 如果畫面顯示 [API enabled] (API 已啟用),代表 API 已啟用。如果未顯示,請按一下 [Enable] (啟用) 按鈕。

取得代理程式的憑證

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

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

使用服務帳戶

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

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

    gcloud iam service-accounts create [MY-SVC-ACCT-ID] --display-name "my service account"
    

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

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

     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 金鑰。舉例來說,您可以使用 Cloud SDK:

     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 來運作。

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

 gcloud auth application-default login

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

將代理程式連結至 GCP 專案

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

Go

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

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

Java

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

 -cprof_project_id=[GCP_PROJECT_ID]

Node.js

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

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

Python

指定額外參數 project_id (位於 start 物件),如剖析 Python 程式碼一文所述:

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

後續步驟

如要進一步瞭解 Profiler 圖表和控制項,請參閱使用 Stackdriver Profiler 介面一文。如要瞭解進階資訊,請參考以下主題:

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Stackdriver Profiler
需要協助嗎?請前往我們的支援網頁