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, l'applicazione e l'agente Cloud Profiler vengono eseguiti all'esterno Google Cloud, ma utilizzi l'interfaccia Cloud Profiler per analizzare i dati di profilazione.
L'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 nuovamente i profili per l'analisi. Per attivare questa opzione, devi:
- Crea un progetto Google Cloud e abilita l'API.
- Ottieni le credenziali che l'agente di profilazione deve utilizzare durante il caricamento dei profili.
- Configura l'agente in modo che utilizzi le credenziali e l'ID del progettoGoogle Cloud .
Crea 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.
Roles required to create a project
To create a project, you need the Project Creator
(roles/resourcemanager.projectCreator
), which contains
the resourcemanager.projects.create
permission. Learn how to grant
roles.
Abilita l'API Profiler
-
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. Se viene visualizzato il messaggio API abilitata, l'API è già abilitata. In caso contrario, fai clic sul pulsante Attiva.
Ottenere le credenziali per l'agente
Esistono due modi per ottenere le credenziali da utilizzare per l'agente:
- Consenti all'agente di utilizzare un account di servizio con autenticazione tramite 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 tramite chiave privata, devi:
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 saperne di più, consulta Creare un service account.
Concedi al account di servizio il ruolo roles/cloudprofiler.agent, in modo che possa scrivere i 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, vedi Concessione dei ruoli ai service account.
Crea una chiave JSON per il 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, vedi Creazione di account di servizio account.
Sulla macchina su cui verrà eseguito l'agente di profilazione:
- Inserisci una copia del file contenente la chiave JSON che hai appena creato.
- 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 in esecuzione dell'agente di profilazione, quindi se utilizzi uno script o un Dockerfile per eseguire il processo, includi la variabile di ambiente.
Utilizzo delle credenziali predefinite dell'applicazione
Per consentire all'agente di utilizzare le credenziali predefinite dell'applicazione, ottieni le credenziali di accesso utente tramite un flusso web e inseriscile nella posizione prevista dalla libreria Credenziali predefinite dell'applicazione. Queste credenziali fungono da proxy per un account di servizio.
Per utilizzare le credenziali predefinite dell'applicazione, esegui questo comando Google Cloud CLI:
gcloud auth application-default login
e segui i passaggi indicati dal comando.
Collegamento dell'agente a un progetto Google Cloud
L'agente di profilazione deve essere configurato per specificare l'ID del tuo progetto Google Cloud in modo che possa caricare i profili. Il meccanismo per farlo dipende dalla lingua.
Vai
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 di configurazione dell'agente Java aggiuntivo,
cprof_project_id
, nell'invocazione Java:
-cprof_project_id=GCP_PROJECT_ID
Quando l'applicazione non è in grado di accedere al server di metadati di Compute Engine, vengono visualizzati messaggi simili ai seguenti:
Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
-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
- Seleziona i profili da analizzare
- Interagire con il grafico a fiamme
- Filtrare il grafico a fiamme
- Impostare lo stato attivo sul grafico a fiamme
- Confrontare i profili