Elaborar perfiles de aplicaciones de Go

En esta página se describe cómo modificar tu aplicación Go para registrar datos de creación de perfiles y enviarlos a tu proyecto de Google Cloud. Para obtener información general sobre la creación de perfiles, consulta Conceptos de la elaboración de perfiles.

.

Tipos de perfiles de Go:

  • Tiempo de CPU
  • Montículo
  • Montículo asignado
  • Contención (mutex de Go)
  • Hilos (gorrutinas de Go)

Versiones del lenguaje Go compatibles:

Versiones compatibles del agente de creación de perfiles:

  • Se admite la versión más reciente del agente. En general, no se admiten las versiones que tengan más de un año. Te recomendamos que utilices la versión más reciente del agente.

Sistemas operativos compatibles:

  • Linux. La creación de perfiles de aplicaciones Go es compatible con los kernels de Linux cuya biblioteca C estándar se implementa con glibc o con musl. Para obtener información sobre la configuración específica de los kernels de Linux Alpine, consulta Ejecutar en Linux Alpine.

Entornos admitidos:

Habilitar la API Profiler

Antes de usar el agente de creación de perfiles, asegúrate de que la API Profiler subyacente esté habilitada. Puedes comprobar el estado de la API y habilitarla si es necesario mediante la CLI de Google Cloud o la consola de Google Cloud :

CLI de gcloud

  1. Si aún no has instalado Google Cloud CLI en tu estación de trabajo, consulta la documentación de Google Cloud CLI.

  2. Ejecuta el siguiente comando:

    gcloud services enable cloudprofiler.googleapis.com
    

Para obtener más información, consulta gcloud services.

Google Cloud console

  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.

Asignar un rol de gestión de identidades y accesos a una cuenta de servicio

Si vas a implementar tu aplicación en recursos y usas la cuenta de servicio predeterminada sin haber modificado las concesiones de roles de esa cuenta, puedes saltarte esta sección. Google Cloud

Si haces alguna de las siguientes acciones, debes conceder a la cuenta de servicio el rol de gestión de identidades y accesos Agente de Cloud Profiler (roles/cloudprofiler.agent):

  1. Estás usando la cuenta de servicio predeterminada, pero has modificado sus concesiones de roles.
  2. Estás usando una cuenta de servicio creada por un usuario.
  3. Si usas Workload Identity, asigna el rol Agente de Cloud Profiler a la cuenta de servicio de Kubernetes.

Puedes asignar un rol de IAM a una cuenta de servicio mediante laGoogle Cloud consola o la CLI de Google Cloud. Por ejemplo, puedes usar el 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

Antes de usar el comando anterior, sustituye lo siguiente:

  • GCP_PROJECT_ID: tu ID de proyecto.
  • MY_SVC_ACCT_ID: el nombre de tu cuenta de servicio.

Para obtener información detallada, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Usar Cloud Profiler

En todos los entornos compatibles, se usa Profiler importando el paquete en la aplicación y, a continuación, inicializando Profiler lo antes posible en la aplicación.

Para habilitar la creación de perfiles de contención de Mutex ("Contención" en la interfaz), define la opción de configuración MutexProfiling como true.

Para obtener más información sobre la API Profiler, incluidas todas las opciones de configuración, consulte la documentación pública de la API.

Compute Engine

En Compute Engine, en profiler.Config, define Service con un nombre para el servicio que se va a crear el perfil y, de forma opcional, define ServiceVersion con la versión del servicio:


// snippets is an example of starting cloud.google.com/go/profiler.
package