Crea perfiles de aplicaciones que se ejecutan fuera de Google Cloud

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

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

El uso de la interfaz de Profiler para analizar datos de generación de perfiles requiere un proyecto de Google Cloud. El agente de generación de perfiles que se ejecuta en otro lugar debe poder enviar los perfiles nuevamente para su análisis. Para habilitar esto, debes hacer lo siguiente:

  1. Crea un proyecto de Google Cloud y habilita la API.
  2. Obtén credenciales para que el agente de generación de perfiles las use cuando subas perfiles.
  3. Configura el agente para usar las credenciales y el ID del proyecto de Google Cloud.

Crea un proyecto de 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

Habilita la API de Profiler

  1. Enable the required API.

    Enable the API

  2. Si aparece API habilitada, la API ya está habilitada. De lo contrario, haz clic en el botón Habilitar.

Obtén credenciales para el agente

Hay dos formas de obtener credenciales para que use el agente:

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

Usa 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"
    

    Para obtener más información, consulta la sección Crea una cuenta de servicio.

  2. Otorga a la cuenta de servicio la función roles/cloudprofiler.agent para que pueda escribir datos de generación de perfiles. Por ejemplo, con la CLI de Google Cloud:

     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
    

    Consulta la sección Otorga funciones a una cuenta de servicio para recursos específicos para obtener más información.

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

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

    Consulta la sección Crea claves de cuenta de servicio para obtener más información.

  4. En la máquina en la que se ejecutará el agente de generación de perfiles, haz lo siguiente:

    1. Coloca una copia del archivo que contiene la clave JSON que acabas de crear.
    2. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS con el nombre completamente calificado del archivo que contiene la clave JSON. Esta variable de entorno debe ser visible para el proceso que ejecuta el agente de generación de perfiles, por lo que si usas una secuencia de comandos o un Dockerfile para ejecutar el proceso, incluye la variable de entorno allí.

Usa credenciales predeterminadas de la aplicación

Para permitir que el agente use las credenciales predeterminadas de la aplicación, obtén credenciales de acceso de usuario a través de un flujo web y colócalas donde la biblioteca de credenciales predeterminadas de la aplicación las espera. Estas credenciales actúan como proxy para una cuenta de servicio.

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

 gcloud auth application-default login

y sigue los pasos que se indicarán con este comando.

Vincula el agente a un proyecto de Google Cloud

El agente de generación de perfiles se debe configurar para especificar el ID de tu proyecto de Google Cloud a fin de poder subir perfiles. El mecanismo para hacerlo depende del lenguaje.

Comienza a usarlo

Especifica un parámetro adicional, ProjectID, en el objeto profiler.Config que se describe en la página sobre cómo generar perfiles de Go:

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

Java

Especifica una marca adicional de configuración del agente de Java, 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, agrega -cprof_zone_name=VALUE a tus marcas de configuración del agente y reinicia tu aplicación. Para este escenario, Reemplaza VALUE por una cadena descriptiva, como “test”.

Node.js

Especifica un parámetro adicional, projectID, en el objeto serviceContext descrito en la página sobre cómo generar perfiles de aplicaciones de Node.js:

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

Python

Especifica un parámetro adicional, project_id, en la llamada de método start que se describe en la página sobre cómo crear perfiles de aplicaciones de Python:

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

¿Qué sigue?