Crear perfiles de aplicaciones que se ejecutan fuera de Google Cloud

En esta página se describe cómo crear perfiles de aplicaciones que se ejecutan fuera de Google Cloud.

En este caso, tu aplicación y el agente de Cloud Profiler se ejecutan fuera Google Cloud, pero usas la interfaz de Cloud Profiler para analizar los datos de creación de perfiles.

Para analizar los datos de creación de perfiles con la interfaz de Profiler, se necesita un Google Cloud proyecto. El agente de creación de perfiles que se ejecuta en otro lugar debe poder enviar los perfiles para analizarlos. Para habilitar esta opción, debes hacer lo siguiente:

  1. Crea un Google Cloud proyecto y habilita la API.
  2. Obtén las credenciales que usará el agente de creación de perfiles al subir perfiles.
  3. Configura el agente para que use las credenciales y el ID del proyectoGoogle Cloud .

Crea un Google Cloud proyecto

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.

Go to project selector

Habilitar la API Profiler

  1. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  2. Si se muestra API habilitada, significa que la API ya está habilitada. Si no es así, haz clic en el botón Habilitar.

Obtener las credenciales del agente

Hay dos formas de obtener las credenciales que usará el agente:

  • Permitir que el agente use una cuenta de servicio con autenticación de clave privada
  • Permite que el agente use las credenciales de aplicación predeterminadas (ADC).

Usar cuentas de servicio

Para permitir que el agente use una cuenta de servicio con autenticación de clave privada, debes hacer lo siguiente:

  1. Crea una cuenta de servicio. Por ejemplo, con Google Cloud CLI:

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

    Consulta más información en el artículo Crear una cuenta de servicio.

  2. Da a la cuenta de servicio el rol roles/cloudprofiler.agent para que pueda escribir datos de creación de perfiles. Por ejemplo, con 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
    

    Para obtener más información, consulta Conceder roles a cuentas de servicio.

  3. Crea una clave JSON para la cuenta de servicio. Por ejemplo, con la CLI de Google Cloud:

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

    Consulta más información sobre cómo crear claves de cuentas de servicio.

  4. En el equipo en el que se ejecutará el agente de creación de perfiles:

    1. Coloca una copia del archivo que contiene la clave JSON que acabas de crear.
    2. Define la variable de entorno GOOGLE_APPLICATION_CREDENTIALS con el nombre completo del archivo que contiene la clave JSON. Esta variable de entorno debe ser visible para el proceso que ejecuta el agente de creación de perfiles. Por lo tanto, si usas una secuencia de comandos o un archivo Dockerfile para ejecutar el proceso, incluye la variable de entorno en ese archivo.

Usar las credenciales de aplicación predeterminadas

Para que el agente pueda usar las credenciales predeterminadas de la aplicación, debes obtener las credenciales de acceso de usuario mediante un flujo web y colocarlas donde la biblioteca de credenciales predeterminadas de la aplicación espera encontrarlas. Estas credenciales actúan como proxy de una cuenta de servicio.

Para usar las credenciales predeterminadas de la aplicación, ejecuta el siguiente comando de la CLI de Google Cloud:

 gcloud auth application-default login

y sigue los pasos que te indica este comando.

Vincular el agente a un proyecto de Google Cloud

El agente de creación de perfiles debe configurarse para especificar el ID de tu proyecto de Google Cloud para que pueda subir perfiles. El mecanismo para hacerlo depende del idioma.

Go

Especifica un parámetro adicional, ProjectID, en el objeto profiler.Config descrito en Crear perfiles de aplicaciones Go:

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

Java

Especifica una marca de configuración del agente de Java adicional, cprof_project_id, en la invocación de Java:

 -cprof_project_id=GCP_PROJECT_ID

Cuando tu aplicación no puede acceder al servidor de metadatos de Compute Engine, se muestran mensajes similares a los siguientes:

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
Para detener estos mensajes, añade -cprof_zone_name=VALUE a las marcas de configuración de tu agente y reinicia la aplicación. En este caso, sustituye VALUE por una cadena descriptiva, como "prueba".

Node.js

Especifica un parámetro adicional, projectID, en el objeto serviceContext descrito en Elaborar perfiles de aplicaciones Node.js:

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

Python

Especifica un parámetro adicional, project_id, en la llamada al método start que se describe en Elaborar perfiles de aplicaciones de Python:

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

Siguientes pasos