Profilazione delle applicazioni in esecuzione al di fuori 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 eseguite all'esterno di Google Cloud, ma utilizzi Cloud Profiler per analizzare i dati di profilazione.

Utilizzo dell'interfaccia Profiler per analizzare i dati di profilazione richiede un progetto Google Cloud. L'agente di profilazione in esecuzione altrove deve essere in grado di inviare i profili per l'analisi. Per attivarlo, devi:

  1. Creare un progetto Google Cloud e abilitare l'API.
  2. Ottieni le credenziali dell'agente di profilazione da utilizzare 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

In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.

Go to project selector

Abilita l'API Profiler

  1. Attiva l'API richiesta.

    Abilita l'API

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

Ottieni le credenziali per l'agente

Esistono due modi per ottenere le credenziali che l'agente può utilizzare:

  • 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, utilizzando Google Cloud CLI:

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

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

  2. Concedi all'account di servizio il roles/cloudprofiler.agent role, in modo da poter 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 saperne di più, consulta Concessione dei ruoli agli account di servizio informazioni.

  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 Creazione di chiavi dell'account di servizio informazioni.

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

    1. Inserisci una copia del file contenente la chiave JSON appena creata.
    2. Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS al nome completo del file contenente la chiave JSON. Questa variabile di ambiente deve essere visibile nel processo in esecuzione l'agente di profilazione, pertanto se utilizzi uno script o un Dockerfile per eseguire durante il processo, includi qui la variabile di ambiente.

Utilizzo delle credenziali predefinite dell'applicazione

Per consentire all'agente di utilizzare le credenziali predefinite dell'applicazione, puoi ottenere le credenziali di accesso degli utenti tramite un flusso web e inserirli dove sono previsti dalla libreria delle credenziali predefinite dell'applicazione. 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 indicati da questo comando.

Collegamento dell'agente a un progetto Google Cloud

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

Vai

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

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

Java

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

 -cprof_project_id=GCP_PROJECT_ID

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

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

Node.js

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

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

Python

Specifica un parametro aggiuntivo, project_id, nel parametro start descritta in Profilazione delle applicazioni Python:

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

Passaggi successivi