Profilazione delle applicazioni Node.js

Questa pagina descrive come modificare l'applicazione Node.js per acquisire i dati di profilazione e inviarli al tuo progetto Google Cloud. Per informazioni generali sulla profilazione, vedi Concetti di profilazione.

Tipi di profilo per Node.js:

  • Heap
  • Tempo totale di esecuzione

Versioni del linguaggio Node.js supportate:

Versioni dell'agente di profilazione supportate:

  • È supportata la versione più recente dell'agente. In generale, le release precedenti a un anno non sono supportate. Ti consigliamo di utilizzare la versione dell'agente rilasciata più di recente.

Sistemi operativi supportati:

  • Linux. La profilazione delle applicazioni Node.js è supportata per i kernel Linux la cui libreria C standard è implementata con glibc o con musl. Per informazioni sulla configurazione specifiche per i kernel Linux Alpine, consulta Esecuzione su Linux Alpine.

Ambienti supportati:

Abilitazione dell'API Profiler

Prima di utilizzare l'agente di profilazione, assicurati che l'API Profiler sottostante sia abilitata. Puoi controllare lo stato dell'API e abilitarla, se necessario, utilizzando Google Cloud CLI o la console Google Cloud :

gcloud CLI

  1. Se non hai ancora installato Google Cloud CLI sulla tua workstation, consulta la documentazione di Google Cloud CLI.

  2. Esegui questo comando:

    gcloud services enable cloudprofiler.googleapis.com
    

Per saperne di più, vedi gcloud services.

Console Google Cloud

  1. Abilita l'API Cloud Profiler.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilitare l'API

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

Concedi il ruolo IAM al account di servizio

Se stai eseguendo il deployment dell'applicazione sulle risorse Google Cloud e se utilizzi il account di servizio predefinito e non hai modificato le concessioni di ruolo a questo account di servizio, puoi saltare questa sezione.

Se esegui una delle seguenti operazioni, devi concedere al account di servizio il ruolo IAM di Agente Cloud Profiler (roles/cloudprofiler.agent):

  1. Stai utilizzando il account di servizio predefinito, ma hai modificato le concessioni di ruolo.
  2. Stai utilizzando un account di servizio creato dall'utente.
  3. Stai utilizzando Workload Identity, concedi il ruolo Agente Cloud Profiler al account di servizio Kubernetes.

Puoi concedere un ruolo IAM a un account di servizio utilizzando la consoleGoogle Cloud o Google Cloud CLI. Ad esempio, potresti utilizzare il comando gcloud projects add-iam-policy-binding:

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

Prima di utilizzare il comando precedente, sostituisci quanto segue:

  • GCP_PROJECT_ID: il tuo ID progetto.
  • MY_SVC_ACCT_ID: il nome del account di servizio.

Per informazioni dettagliate, vedi Gestire l'accesso a progetti, cartelle e organizzazioni.

Utilizzo di Cloud Profiler

In tutti gli ambienti supportati, utilizzi Profiler installando il pacchetto @google-cloud/profiler, aggiungendo un'istruzione require all'applicazione e poi eseguendo il deployment dell'applicazione nel solito modo.

Prima di installare @google-cloud/profiler

Il pacchetto @google-cloud/profiler dipende da un componente nativo. Il modulo node-gyp viene utilizzato per creare questo componente nativo. Per informazioni sulle dipendenze necessarie per creare file binari con node-gyp, consulta la documentazione sull'installazione di node-gyp.

Installazione

Per installare l'ultima versione di Cloud Profiler:

    npm install @google-cloud/profiler

Se utilizzi anche l'agente Trace, quando modifichi l'applicazione, importa il pacchetto Profiler dopo il pacchetto dell'agente Trace (@google-cloud/trace-agent).

Compute Engine

Per Compute Engine, segui questi passaggi:

  1. Installa l'ultima versione di Cloud Profiler:

    npm install @google-cloud/profiler
    
  2. Modifica il codice dell'applicazione require per creare un oggetto serviceContext che assegna a service il nome del servizio di cui viene eseguito il profiling. (Facoltativo) Puoi assegnare a version la versione del servizio di cui viene eseguito il profiling. Per ulteriori informazioni su queste opzioni di configurazione, consulta Argomenti relativi al nome e alla versione del servizio:

    require('@google-cloud/profiler').start({
      serviceContext: {
        service: 'your-service',
        version: '1.0.0',
      },
    });

GKE

Per GKE, segui questi passaggi:

  1. Modifica il Dockerfile per installare il pacchetto Profiler:

    FROM node:10
    ...
    RUN npm install @google-cloud/profiler
    
  2. Modifica il codice dell'applicazione require per creare un oggetto serviceContext che assegna a service il nome del servizio di cui viene eseguito il profiling. (Facoltativo) Puoi assegnare a version la versione del servizio di cui viene eseguito il profiling. Per ulteriori informazioni su queste opzioni di configurazione, consulta Argomenti relativi al nome e alla versione del servizio:

    require('@google-cloud/profiler').start({
      serviceContext: {
        service: 'your-service',
        version: '1.0.0'