Profilazione delle applicazioni in esecuzione all'esterno di Google Cloud

Questa pagina descrive come profilare le applicazioni in esecuzione al di fuori di Google Cloud.

In questo scenario, la tua applicazione e l'agente Cloud Profiler vengono eseguiti al di fuori di Google Cloud, ma utilizzi l'interfaccia di Cloud Profiler per analizzare i dati di profilazione.

Per utilizzare l'interfaccia di Profiler per analizzare i dati di profilazione, è necessario un progetto Google Cloud. L'agente di profilazione in esecuzione altrove deve essere in grado di inviare i profili per l'analisi. Per attivare questa funzionalità, devi:

  1. Creare un progetto Google Cloud e abilitare l'API.
  2. Ottieni le credenziali da utilizzare per l'agente di profilazione durante il caricamento dei profili.
  3. Configura l'agente in modo che utilizzi le credenziali e l'ID del progetto Google Cloud.

Creare un progetto Google Cloud

Nella pagina del selettore di progetti della console Google Cloud, fai clic su Crea progetto per iniziare a creare un nuovo progetto Google Cloud.

Vai al selettore progetti

Abilita l'API Profiler

  1. Attiva l'API richiesta.

    Abilita l'API

  2. Se viene visualizzato API abilitata, significa che l'API è già abilitata. In caso contrario, fai clic sul pulsante Attiva.

Recupera le credenziali dell'agente

Esistono due modi per ottenere le credenziali che l'agente utilizzerà:

  • Consenti all'agente di utilizzare un account di servizio con autenticazione a chiave privata
  • Consenti all'agente di utilizzare le credenziali predefinite dell'applicazione (ADC).

Utilizzo degli account di servizio

Per consentire all'agente di utilizzare un account di servizio con autenticazione a chiave privata, devi:

  1. Crea un account di servizio. Ad esempio, se utilizzi Google Cloud CLI:

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

    Per ulteriori informazioni, vedi Creazione di un account di servizio.

  2. Concedi all'account di servizio il roles/cloudprofiler.agent role, in modo che possa scrivere dati di profilazione. Ad esempio, utilizzando 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
    

    Per ulteriori informazioni, consulta Concessione dei ruoli agli account di servizio.

  3. Creare una chiave JSON per l'account di servizio. Ad esempio, utilizzando Google Cloud CLI:

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

    Per ulteriori informazioni, consulta la sezione Creazione di chiavi degli account di servizio.

  4. Sulla macchina su cui verrà eseguito l'agente di profilazione:

    1. Copia una copia del file contenente la chiave JSON che hai appena creato.
    2. Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS sul nome completo del file contenente la chiave JSON. Questa variabile di ambiente deve essere visibile al processo che esegue l'agente di profilazione. Pertanto, se utilizzi uno script o un Dockerfile per eseguire il processo, includi la variabile di ambiente.

Utilizzo delle credenziali predefinite dell'applicazione

Per abilitare l'agente a utilizzare le credenziali predefinite dell'applicazione, devi ottenere le credenziali di accesso utente tramite un flusso web e inserirle dove la libreria delle Credenziali predefinite dell'applicazione le prevede. Queste credenziali fungono da proxy per un account di servizio.

Per utilizzare le credenziali predefinite dell'applicazione, esegui questo comando di Google Cloud CLI:

 gcloud auth application-default login

e segui i passaggi che questo comando ti guida.

Collegamento dell'agente a un progetto Google Cloud

L'agente di profilazione deve essere configurato in modo da specificare l'ID del progetto Google Cloud in modo che possa caricare i profili. Il meccanismo dipende dalla lingua.

Go

Specifica un parametro aggiuntivo, ProjectID, nell'oggetto profiler.Config descritto in Profilazione delle applicazioni Go:

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

Java

Specifica un flag aggiuntivo di configurazione dell'agente Java, cprof_project_id, nella chiamata Java:

 -cprof_project_id=GCP_PROJECT_ID

Quando l'applicazione non è in grado di accedere al server metadati di Compute Engine, vengono visualizzati messaggi simili ai seguenti:

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
Per interrompere questo messaggio, aggiungi -cprof_zone_name=VALUE ai flag di configurazione dell'agente e riavvia l'applicazione. Per questo scenario, sostituisci VALUE con una stringa descrittiva come "test".

Node.js

Specifica un parametro aggiuntivo, projectID, nell'oggetto serviceContext descritto in Profilazione delle applicazioni Node.js:

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

Python

Specifica un parametro aggiuntivo, project_id, nella chiamata al metodo start descritta in Profilazione delle applicazioni Python:

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

Passaggi successivi