Configura el Depurador de Cloud para Go

Resumen

En esta página, se describe cómo configurar el entorno y la aplicación de Go para usar el Depurador de Cloud. Para algunos entornos, debes especificar de forma explícita el nivel de acceso a fin de permitir que el agente del Depurador de Cloud envíe datos. Recomendamos configurar el nivel de acceso más amplio posible y, luego, usar la administración de identidades y accesos para restringir el acceso. De acuerdo con esta práctica recomendada, debes configurar el nivel de acceso para que estén todas las API de Cloud con la opción cloud-platform.

Versiones de lenguajes y entornos de procesamiento

El Depurador de Cloud está disponible para Go 1.9 y versiones posteriores en los siguientes entornos de procesamiento:

Entorno de App Engine Standard Entorno flexible de App Engine Compute Engine Google Kubernetes Engine Cloud Run Cloud Run for Anthos en Google Cloud VM y contenedores que se ejecutan en otros lugares Cloud Functions

Configura el Depurador de Cloud

Para configurar el Depurador de Cloud, completa las siguientes tareas:

  1. Verifica que la API del Depurador de Cloud esté habilitada para tu proyecto.

  2. Instala y configura Debugger en el entorno de procesamiento que usas.

  3. Selecciona tu código fuente.

Verifica que la API de Cloud Debugger esté habilitada

Para comenzar a usar el Depurador de Cloud, asegúrate de que la API del Depurador de Cloud esté habilitada. El Depurador de Cloud está habilitado de forma predeterminada para la mayoría de los proyectos.
Habilita la API de Depurador de Cloud

Google Kubernetes Engine

GCLOUD

Para habilitar Debugger con gcloud, completa los siguientes pasos:

  1. Crea tu clúster con uno de los niveles de acceso siguientes:

    • https://www.googleapis.com/auth/cloud-platform otorga a tu clúster acceso a todas las API de Google Cloud.

    • https://www.googleapis.com/auth/cloud_debugger otorga a tu clúster acceso solo a la API de Debugger. Usa este nivel de acceso para fortalecer la seguridad de tu clúster.

    gcloud container clusters create example-cluster-name \
           --scopes=https://www.googleapis.com/auth/cloud_debugger
    
  2. Agrega las líneas siguientes a tu Dockerfile para agregar el agente de Debugger a tu app en contenedores:

    RUN go get -u cloud.google.com/go/cmd/go-cloud-debug-agent \
        go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \
        -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
    

    Aquí:

    • PATH_TO_FILE especifica la ruta relativa al archivo con formato JSON que contiene la configuración de contexto de origen.

    • APP_NAME es el nombre de la aplicación o servicio. Esto, junto con la versión, se usa para identificar tu aplicación en Cloud Console.

    • APP_VERSION es un marcador de versión que suministra la aplicación. Por ejemplo, puedes usar un número de compilación. Cloud Console muestra la versión en ejecución como module - version. Por ejemplo, main - 1.0.

    • PATH_TO_BINARY especifica la ruta de acceso relativa al objeto binario de la aplicación.

    • ARG1 y ARG2 son marcadores de posición para cualquier argumento adicional que requiera tu aplicación.

Ahora puedes usar el depurador cuando implementes tu app en contenedores.

Para obtener información más detallada sobre cómo crear un clúster, consulta la sección correspondiente.

CONSOLE

Para habilitar Debugger con la consola, completa los pasos siguientes:

  1. Después de seleccionar tu tipo de clúster, haz clic en Más opciones en el panel de Grupos de nodos:

    Campo de grupo de nodos que muestra el botón Más opciones encerrado en un rectángulo rojo.

  2. Selecciona una de las opciones siguientes del panel de Seguridad:

    • Permitir el acceso total a todas las API de Cloud

    • Permitir el acceso a cada API y, luego, seleccionar Habilitada para el Depurador de Cloud

Compute Engine

  1. Asegúrate de que tus instancias de VM de Compute Engine estén ejecutando una imagen de Debian Linux de 64 bits.

  2. Asegúrate de que tus instancias de VM de Compute Engine se creen con la opción de nivel de acceso Permitir acceso completo a todas las API de Cloud, o que tengan uno de los siguientes niveles de acceso:

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. Las optimizaciones actuales del compilador de Go interfieren en la depuración precisa. Como resultado, el Depurador de Cloud muestra información incorrecta sobre tu aplicación cuando está compilada con las optimizaciones predeterminadas del compilador de Go.

    Para obtener la información de depuración correcta, compila tu aplicación sin las optimizaciones predeterminadas. Con los siguientes comandos de muestra, se ilustra cómo inhabilitar las optimizaciones cuando se usa Go 1.10 o una versión posterior:

    go build -gcflags=all='-N -l'
    

    El valor gcflags anterior incluye -N a fin de inhabilitar las optimizaciones y -l para inhabilitar el intercalado.

  4. Descarga el agente de Debugger.

    El agente de Cloud Debugger es un objeto binario ligero que habilitas para tu aplicación en el inicio. El agente se inicia con tu aplicación y se comunica con el backend del Depurador de Cloud mientras se ejecuta la aplicación.

    Una vez que compilaste e implementaste la aplicación de Compute Engine, descarga e instala el agente de depuración:

    go get -u cloud.google.com/go/cmd/go-cloud-debug-agent
    
  5. Inicia el agente y tu programa:

    go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \
                     -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
    

    Aquí:

    • PATH_TO_FILE especifica la ruta relativa al archivo con formato JSON que contiene la configuración de contexto de origen.

    • APP_NAME es el nombre de la aplicación o servicio. Esto, junto con la versión, se usa para identificar tu aplicación en Cloud Console.

    • APP_VERSION es un marcador de versión que suministra la aplicación. Por ejemplo, puedes usar un número de compilación. Cloud Console muestra la versión en ejecución como module - version. Por ejemplo, main - 1.0.

    • PATH_TO_BINARY especifica la ruta de acceso relativa al objeto binario de la aplicación.

    • ARG1 y ARG2 son marcadores de posición para cualquier argumento adicional que requiera tu aplicación.

    Por ejemplo:

    go-cloud-debug-agent -appmodule=main -appversion=1.0 -- bin/my-app my-arg
    

Ahora puedes usar Debugger con tu app.

En el entorno local y en otros lugares

El agente de Cloud Debugger para Go solo se admite en los entornos locales o de otro tipo que usan Go 1.9 y versiones anteriores.