Configura Stackdriver Debugger para Java

En esta página, se describe cómo configurar el entorno y la aplicación de Java 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 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.

Antes de comenzar

Para comenzar a usar Debugger, asegúrate de que la API de Debugger esté habilitada.
Habilita la API de Debugger

Entorno estándar de App Engine

El depurador está habilitado de forma predeterminada; no se requiere configuración. En la página de Depuración en Cloud Console, se intentará mostrar de forma automática los archivos de origen de Java que se usaron para compilar la app.

Para obtener más información, consulta Selecciona el código fuente de forma automática.

Entorno flexible de App Engine

El depurador está habilitado de forma predeterminada para el entorno de ejecución de Java; no se requiere configuración. En la página de Depuración en Cloud Console, se intentará mostrar de forma automática los archivos de origen de Java que se usaron para compilar la app.

El depurador se incluye de forma predeterminada en los entornos de ejecución personalizados que usan las imágenes base que proporciona Google para Java. No se requiere configuración si se usa el punto de entrada predeterminado. En la página de Depuración en Cloud Console, se intentará mostrar de forma automática los archivos de origen de Java que se usaron para compilar la app.

Para usar Stackdriver Debugger con entornos de ejecución personalizados compilados con otras imágenes base, sigue las instrucciones de configuración de Compute Engine.

Para obtener más información, consulta Selecciona el código fuente de forma automática.

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 si deseas agregar el agente de Debugger a tu app en contenedores y, luego, inicializarlo cuando se implemente la app:

    # Create a directory for the Debugger. Add and unzip the agent in the directory.
    RUN  mkdir /opt/cdbg && \
         wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
         tar xvz -C /opt/cdbg
    
    # Start the agent when the app is deployed.
    RUN java -agentpath:/opt/cdbg/cdbg_java_agent.so \
        -Dcom.google.cdbg.module=MODULE \
        -Dcom.google.cdbg.version=VERSION \
        -jar PATH_TO_JAR_FILE
    

Donde:

  • PATH_TO_JAR_FILE es la ruta relativa al archivo JAR de la aplicación. P. ej.: ~/myapp.jar.

  • MODULE es el nombre de la app. Junto con la versión, este identifica la app en Cloud Console. Ejemplos: MyApp, Backend o Frontend.

  • VERSION es la versión de la app (p. ej., el ID de compilación). Cloud Console muestra la app en ejecución como MODULE - VERSION. Ejemplos: v1.0, build_147 o v20160520.

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

Para que en la página de Depuración en Cloud Console se muestre de forma automática el código fuente que coincide con la app implementada, consulta la sección Selecciona el código fuente de forma automática.

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

Puedes usar Stackdriver Debugger con cualquier app de Java que se ejecute en una instancia de Google Compute Engine. Recomendamos que habilites Debugger en todas las instancias en ejecución de tu app.

  1. Asegúrate de que tus instancias de VM de Compute Engine estén en ejecución:

    • Una imagen de Debian Linux de 64 bits
    • Java JDK versión 7, 8 o 9
  2. Asegúrate de que tus instancias de VM de Compute Engine se creen con la opción de nivel de acceso Permitir el acceso total 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 paquete de agente ya compilado:

    sudo mkdir /opt/cdbg
    wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
        sudo tar xvz -C /opt/cdbg
    
  4. Agrega el agente a tu invocación de Java:
    (Si usas Tomcat o Jetty, consulta la sección Servidores web).

    java -agentpath:/opt/cdbg/cdbg_java_agent.so \
      -Dcom.google.cdbg.module=MODULE \
      -Dcom.google.cdbg.version=VERSION \
      -jar PATH_TO_JAR_FILE
    

    En el comando anterior, se muestra lo siguiente:

    • PATH_TO_JAR_FILE es la ruta relativa al archivo JAR de la aplicación. P. ej.: ~/myapp.jar.

    • MODULE es el nombre de la app. Junto con la versión, este identifica la app en Cloud Console. Ejemplos: MyApp, Backend o Frontend.

    • VERSION es la versión de la app (p. ej., el ID de compilación). Cloud Console muestra la app en ejecución como MODULE - VERSION. Ejemplos: v1.0, build_147 o v20160520.

Ahora puedes usar Debugger con tu app.

Para que en la página de Depuración en Cloud Console se muestre de forma automática el código fuente que coincide con la app implementada, consulta la sección Selecciona el código fuente de forma automática.

Servidores web

Los servidores web de Java generalmente comienzan a través de un proceso de arranque, y cada servidor web tiene su propia manera de personalizar las opciones de Java.

Tomcat

Agrega esta línea a /etc/default/tomcat7 o /etc/default/tomcat8:

JAVA_OPTS="${JAVA_OPTS} -agentpath:/opt/cdbg/cdbg_java_agent.so \
  -Dcom.google.cdbg.module=MODULE \
  -Dcom.google.cdbg.version=VERSION"

Si ejecutas Tomcat en un contenedor de Docker, agrega esta línea a Dockerfile en su lugar:

ENV JAVA_OPTS -agentpath:/opt/cdbg/cdbg_java_agent.so \
              -Dcom.google.cdbg.module=MODULE \
              -Dcom.google.cdbg.version=VERSION

Jetty

Agrega estas líneas a /var/lib/jetty/start.d:

--exec
-agentpath:/opt/cdbg/cdbg_java_agent.so
-Dcom.google.cdbg.module=MODULE
-Dcom.google.cdbg.version=VERSION

Cloud Run y Cloud Run para Anthos en Google Cloud

  1. Agrega los comandos siguientes a tu Dockerfile a fin de crear un directorio en el que instalar el agente de Debugger, descarga el archivo del agente de Debugger y extráelo en el directorio de instalación:

    RUN mkdir /opt/cdbg && \
        wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_gce.tar.gz | \
        tar xvz -C /opt/cdbg
    

    Localiza la invocación de Java y agrega la marca siguiente para inicializar el agente de Debugger. Por ejemplo:

    RUN  java -agentpath:/opt/cdbg/cdbg_java_agent.so \
        -jar PATH_TO_JAR_FILE
    

    Donde:

    • PATH_TO_JAR_FILE es la ruta de acceso relativa al archivo JAR de la aplicación. Por ejemplo: ~/myapp.jar.

En la página de Depuración, selecciona la ubicación del código fuente. Para que en la página de Depuración en Cloud Console se muestre de forma automática el código fuente que coincide con la app implementada, consulta la sección Selecciona el código fuente de forma automática.

Debugger ya está listo para usar.

En el entorno local y en otros lugares

  1. Descarga el paquete de agente ya compilado del depurador:

    mkdir /opt/cdbg
    wget -qO- https://storage.googleapis.com/cloud-debugger/compute-java/debian-wheezy/cdbg_java_agent_service_account.tar.gz | \
        tar xvz -C /opt/cdbg
    
  2. Descarga las credenciales de la cuenta de servicio.
    A fin de usar el agente Stackdriver Debugger para Java en máquinas que no se alojan en Google Cloud, el agente debe usar las credenciales de la cuenta de servicio de Google Cloud para autenticarse con el Servicio de Stackdriver Debugger.

    Usa la página Cuentas de servicio de Cloud 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 Stackdriver Debugger Agent.

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

  3. Agrega el agente a tu invocación de Java:

    java -agentpath:/opt/cdbg/cdbg_java_agent.so \
      -Dcom.google.cdbg.module=MODULE \
      -Dcom.google.cdbg.version=VERSION \
      -Dcom.google.cdbg.auth.serviceaccount.enable=true
      -Dcom.google.cdbg.auth.serviceaccount.jsonfile=/opt/cdbg/gcp-svc.json
      -jar PATH_TO_JAR_FILE
    

    En el comando anterior, se muestra lo siguiente:

    • PATH_TO_JAR_FILE es la ruta relativa al archivo JAR de la aplicación. P. ej.: ~/myapp.jar.

    • MODULE es el nombre de la app. Junto con la versión, este identifica la app en Cloud Console. Ejemplos: MyApp, Backend o Frontend.

    • VERSION es la versión de la app (p. ej., el ID de compilación). Cloud Console muestra la app en ejecución como MODULE - VERSION. Ejemplos: v1.0, build_147 o v20160520.

    • La variable de entorno GOOGLE_APPLICATION_CREDENTIALS se puede usar en lugar de agregar la propiedad del sistema auth.serviceaccount.jsonfile.

Ahora puedes usar Debugger con tu app.

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

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Stackdriver Debugger