Configura Stackdriver Debugger para Python

En esta página, se describe cómo configurar el entorno y la aplicación de Python para usar Stackdriver Debugger. Para algunos entornos, debes especificar de forma explícita el nivel de acceso a fin de permitir que el agente de Stackdriver Debugger envíe datos. Recomendamos configurar el nivel de acceso más amplio posible y luego usar Cloud Identity and Access Management para restringir el acceso. De acuerdo con estas recomendaciones, configura el nivel de acceso para que sean todas las API de Cloud con la opción cloud-platform.

Entorno estándar de App Engine

Si estás utilizando Python 2.7, el depurador está habilitado de forma predeterminada y no se requiere ninguna configuración.

Si estás utilizando Python 3.7, debes habilitar manualmente los agentes de depuración de acuerdo con las instrucciones para el entorno flexible de App Engine.

La página de Depuración en GCP Console muestra automáticamente los archivos implementados que coinciden con el código fuente de la aplicación. Para obtener más información sobre la coincidencia del código fuente, consulta Selecciona el código fuente de forma automática.

Entorno flexible de App Engine

Puedes utilizar el depurador con el entorno de ejecución de Python o el entorno de ejecución personalizado de App Engine.

  1. Asegúrate de que tus instancias de VM del entorno flexible de App Engine estén ejecutando:

    • Una imagen de Debian Linux de 64 bits
    • Python 2.7 o 3.6
  2. Asegúrate de que tu archivo app.yaml tenga las siguientes líneas:

    runtime: python
    env: flex
    
    # The Python runtime uses Python 3.6 by default.
    # To use Python 2.7 add the following lines.
    # runtime_config:
    #   python_version: 2
    

    Si utilizas un entorno de ejecución personalizado, usa runtime: custom.

  3. Agrega google-python-cloud-debugger a requirements.txt.

  4. Agrega las siguientes líneas lo antes posible en tu código de inicialización, como en la función principal, o en manage.py cuando usas el marco de trabajo web de Django (solamente versión 1.*).

    try:
      import googleclouddebugger
      googleclouddebugger.enable()
    except ImportError:
      pass
    

Ahora puedes usar el depurador con tu aplicación.

Para que la página de Depuración en GCP Console muestre automáticamente el código fuente que coincide con la aplicación implementada, consulta Selecciona el código fuente de forma automática.

GKE

  1. Asegúrate de que se creó el clúster con uno de los siguientes niveles de acceso:

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger

    Ejemplo:

    gcloud container clusters create EXAMPLE-CLUSTER-NAME \
        --scopes https://www.googleapis.com/auth/cloud-platform
    
  2. Sigue las instrucciones para Compute Engine.

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
    • Python 2.7 o 3.7
  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. Descarga el agente de depuración.

    La forma más sencilla de instalar Stackdriver Debugger de Python es con pip:

    pip install google-python-cloud-debugger
    
  4. Agrega las siguientes líneas lo antes posible en tu código de inicialización, como en la función principal, o en manage.py cuando usas el marco de trabajo web de Django.

    try:
      import googleclouddebugger
      googleclouddebugger.enable(
        module='[MODULE]',
        version='[VERSION]'
      )
    except ImportError:
      pass
    

    O… si no puedes cambiar el código, ejecuta el agente de Debugger como un módulo:

    python -m googleclouddebugger \
          --module=[MODULE] \
          --version=[VERSION] \
          -- \
          myapp.py
    

    En el que, en ambos casos:

    • [MODULE] es el nombre de tu aplicación.
      Esto, junto con la versión, se utiliza para identificar el destino de la depuración en la página de Depuración de GCP Console.
      Ejemplos: MyApp, Backend o Frontend.
    • [VERSION] es la versión de la aplicación (por ejemplo, el ID de compilación).
      La página de Depuración de GCP Console muestra la versión en ejecución como [MODULE] - [VERSION].
      Valores de ejemplo: v1.0, build_147 o v20170714.

Ahora puedes usar el depurador con tu aplicación.

Para que la página de Depuración en GCP Console muestre automáticamente el código fuente que coincide con la aplicación implementada, consulta Selecciona el código fuente de forma automática.

En el entorno local y en otros lugares

  1. Asegúrate de que tu estación de trabajo esté ejecutando:

    • Una imagen de Debian Linux de 64 bits
    • Python 2.7 o 3.7
  2. Descarga el agente de depuración.

    La forma más sencilla de instalar Stackdriver Debugger de Python es con pip

    pip install google-python-cloud-debugger
    
  3. Descarga las credenciales de la cuenta de servicio.
    Con el propósito de usar el agente de Stackdriver Debugger para Python en máquinas no alojadas en Google Cloud Platform, el agente debe usar las credenciales de una cuenta de servicio de GCP a fin de autenticarse con el Servicio de Stackdriver Debugger.

    Usa la página de Cuentas de servicio de GCP Console a fin de crear un archivo de credenciales para una cuenta de servicio nueva o existente. La cuenta de servicio debe tener al menos la función de Stackdriver Debugger Agent.

    Coloca el archivo JSON de la cuenta de servicio junto con el agente de Stackdriver Debugger para Python.

  4. Agrega las siguientes líneas lo antes posible en tu código de inicialización, como en la función principal, o en manage.py cuando usas el marco de trabajo web de Django.

    try:
      import googleclouddebugger
      googleclouddebugger.enable(
          module='[MODULE]',
          version='[VERSION]'
          service_account_json_file='/opt/cdbg/gcp-svc.json')
    except ImportError:
      pass
    

    O… si no puedes cambiar el código, ejecuta el agente de Debugger como un módulo:

    python \
        -m googleclouddebugger \
        --module=[MODULE] \
        --version=[VERSION] \
        --service_account_json_file=/opt/cdbg/gcp-svc.json \
        -- \
        myapp.py
    

    En el que, en ambos casos:

    • [MODULE] es el nombre de tu aplicación.
      Esto, junto con la versión, se utiliza para identificar el destino de la depuración en la página de Depuración de GCP Console.
      Ejemplos: MyApp, Backend o Frontend.
    • [VERSION] es la versión de la aplicación (por ejemplo, el ID de compilación).
      La página de Depuración de GCP Console muestra la versión en ejecución como [MODULE] - [VERSION].
      Valores de ejemplo: v1.0, build_147 o v20170714.
    • Se puede usar la variable del entorno GOOGLE_APPLICATION_CREDENTIALS en lugar de especificar service_account_json_file.

Ahora puedes usar el depurador con tu aplicación.

En la página de Depuración de GCP Console, se pueden mostrar los archivos de origen local, sin subir, para el desarrollo local. Consulta Selecciona el código fuente de forma manual.

Solución de problemas

El paquete google-python-cloud-debugger de Python requiere el paquete python2.7-dev de Linux y los paquetes setuptools y wheel de Python. Si bien estos paquetes se suelen instalar cuando instalas pip con todas las dependencias sugeridas, la falta de algunos de ellos puede causar los siguientes errores.

  1. ImportError: No module named setuptools

    Debe estar instalado el paquete setuptools de Python (por ejemplo, pip install setuptools).

  2. invalid command 'bdist_wheel' o Failed building wheel for '...'

    Debe estar instalado el paquete wheel de Python (por ejemplo, pip install wheel).

  3. ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

    Debe estar instalado el paquete python2.7-dev de Linux (por ejemplo, apt-get install python2.7-dev).

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Stackdriver Debugger