Puntos de registro de depuración

Una vez que implementaste o iniciaste la aplicación, puedes abrir Stackdriver Debugger en Google Cloud Platform Console. Stackdriver Debugger te permite incorporar registros en servicios en ejecución sin reiniciar ni interferir en el funcionamiento normal del servicio. Esto es útil para depurar problemas de producción sin necesidad de agregar instrucciones de registro y volver a implementar.

Visita la página de Depuración de GCP Console para usar Google Stackdriver Debugger.

Antes de comenzar

Stackdriver Debugger se puede usar con o sin acceso al código fuente de la aplicación. Si el código fuente no está disponible, consulta Agrega un punto de registro de depuración a continuación para obtener instrucciones sobre cómo ingresar el nombre del archivo y el número de línea de manera manual.

Si el código fuente no está almacenado en Google Cloud Repositories, se muestra de manera automática en la vista de Depuración.

Para poder acceder a un código fuente almacenado en otro lado, como una ubicación local o un repositorio de Git, es posible que debas seleccionar una ubicación de código fuente.

Puntos de registro

Los puntos de registro te permiten incorporar registros en servicios en ejecución sin reiniciar ni interferir en el funcionamiento normal del servicio. Cada vez que una instancia ejecuta código en la ubicación del punto de registro, Stackdriver Debugger registra un mensaje. El resultado se envía al registro correspondiente para el entorno del destino. Por ejemplo, en App Engine, el resultado se envía al registro de la solicitud en Stackdriver Logging.

Los puntos de registro permanecen activos durante 24 horas luego de su creación, o hasta que se borran o se vuelva a implementar el servicio.

Agrega un punto de registro de depuración

Console

Para agregar un punto de registro desde Cloud Console, sigue estos pasos:

  1. Asegúrate de que la pestaña Logpoint (Punto de registro) esté seleccionada en el panel derecho.
  2. En el panel izquierdo, selecciona el archivo que contiene el código fuente en el que quieres agregar el punto de registro. El contenido del archivo se muestra en el panel central.
  3. Haz clic en el número de línea en la ubicación para agregar un punto de registro.
  4. Completa el mensaje en el campo logpoint("") y haz clic en el botón Add (Agregar). Puedes ingresar una expresión entre llaves, como {newScore.score}, para registrar su valor.

Agrega un punto de registro intercalado


Si no hay un código fuente disponible, puedes ingresar la línea de nombre de archivo y otros detalles de manera manual en el panel Logpoint (Punto de registro):Agrega un punto de registro de manera manual

gcloud

Para agregar un punto de registro desde la línea de comandos, ingresa el siguiente código:

gcloud debug logpoints create LOCATION MESSAGE

Leyenda:

  • LOCATION es el nombre del archivo y la línea en la que se configura el punto de registro. El formato es FILE:LINE. FILE puede ser el nombre del archivo o el nombre del archivo precedido por los componentes de la ruta de acceso suficientes como para diferenciarlos de otros archivos con el mismo nombre. Es un error proporcionar un nombre de archivo que no sea único en el destino de depuración.
  • MESSAGE es el mensaje que deseas registrar.

En el siguiente ejemplo, se registra el valor de score en el nivel de registro info, que es el nivel de registro predeterminado para los puntos de registro:

gcloud debug logpoints create HighScoreService.java:105 \
  "User {name} scored {newScore.score}"

Cuando se ejecuta la línea 105 de HighScoreService.java executes, el mensaje se registra con los valores de las variables name y newScore.score que se insertan en la string de resultado.

Formato del mensaje de punto de registro

El mensaje de un punto de registro determina cuál es la información que se registra en el resultado. Las expresiones te permiten evaluar y registrar los valores de interés. Cualquier información en el mensaje entre llaves, como {myObj.myFunc()} o {a + b}, será reemplazado por el valor de esa expresión en el resultado. El mensaje User {name} scored {newScore.score} del ejemplo anterior generará un registro de resultado similar a User user1 scored 99.

Puedes usar las siguientes funciones de lenguaje para las expresiones:

Java

Se admiten la mayoría de las expresiones de Java, incluidas las siguientes opciones:
  • Variables locales: a == 8
  • Operaciones numéricas y booleanas: x + y < 20
  • Instancia y campos estáticos: this.counter == 20, this.myObj.isShutdown, myStatic o com.mycompany.MyClass.staticMember
  • Comparaciones de strings con el operador de igualdad: myString == "abc"
  • Llamadas a la función. Solo se pueden usar funciones de solo lectura. Por ejemplo, se admite StringBuilder.indexOf(), pero no StringBuilder.append().
  • Conversión de tipos, con tipos totalmente calificados: ((com.myprod.ClassImpl) myInterface).internalField

No se admiten las siguientes funciones de lenguaje:

  • Extracción o "unboxing" de tipos numéricos, como Integer; usa myInteger.value en su lugar.

Python

Se admiten la mayoría de las expresiones de Python, incluidas las siguientes opciones:
  • Lectura de variables locales y globales
  • Lectura de arreglos, listas, segmentos, diccionarios y objetos
  • Llamada de métodos sencillos

No se admiten las siguientes funciones de lenguaje:

  • Llamada a funciones que asignan objetos nuevos o usan construcciones complejas
  • Creación de objetos nuevos dentro de la expresión

Go

Se admite la mayoría de la sintaxis de expresión de Go, incluidas las siguientes opciones:
  • Lectura de variables locales y globales
  • Lectura de arreglos, segmentos, mapas y estructuras

No se admiten las siguientes funciones de lenguaje:

  • Lectura de valores de interfaz
  • Tipo de conversiones y literales de composición
  • Llamadas de función distintas de len

Condición de punto de registro

La condición de punto de registro es una expresión simple en el lenguaje de la aplicación que se debe evaluar como verdadera para que el punto de registro se registre. Las condiciones de punto de registro se evalúan cada vez que una instancia ejecuta una línea, hasta que se venza o se borre el punto de registro.

La condición es una expresión booleana completa que puede incluir operadores lógicos:

travelAccessory == “Towel”
ultimateAnswer <= 42
travelAccessory == “Towel” && ultimateAnswer <= 42

Las mismas funciones de lenguaje que se admiten para las expresiones están disponibles para las condiciones.

Console

Ingresa la condición dentro del enunciado “if”:

Configura una condición intercalada

Si no hay un código fuente disponible, puedes especificar la condición en el panel Punto de registro.

gcloud

Las condiciones se expresan con el marcador --condition de logpoints create:

gcloud debug logpoints create HighScoreService.java:105 
--condition="newScore.score > 40"
--log-level="warning"
"Suspiciously high score ({newScore.score}) from user {name}"

En el ejemplo anterior, el punto de registro verifica el valor de newScore.score cuando se ejecuta la línea 105 de la aplicación. Si el valor supera 40, se agrega un mensaje de advertencia en el registro.

Visualiza el resultado

El resultado del punto de registro se envía al registro correspondiente para el entorno del destino.

App Engine

Los puntos de registro configurados en aplicaciones de App Engine envían sus resultados al registro de solicitud en Stackdriver Logging.

Puedes ver los registros en el Panel de registros o en el Visor de registros dedicado.

Puntos de registro en el panel de registros

Compute Engine

Los puntos de registro configurados en aplicaciones de Compute Engine envían los resultados a la misma ubicación que las instrucciones de registro normales. Por ejemplo, en Python, el módulo de registro predeterminado envía su resultado a stdout, pero se puede configurar para que lo escriba en un archivo específico.

Puedes configurar el Agente de Logging para que desvíe esos registros a Stackdriver Logging. Allí, puedes ver los registros en el Visor de registros.

Borra puntos de registro

Luego de 24 horas, los puntos de registro se vuelven inactivos y dejan de registrar mensajes, y se borran de manera automática luego de 30 días. Puedes borrar puntos de registro de manera manual, lo que detendrá el registro y lo quitará del historial para referencias futuras. Sin embargo, ten en cuenta que si borras un punto de registro no se borrarán los mensajes de registro que ya se generaron.

Console

Para borrar un punto de registro de manera manual, usa el menú ampliado en el panel Logpoint History (Historial del punto de registro).

Borrar puntos de registro

gcloud

Para borrar un punto de registro de manera manual, puedes identificarlo con su ID o con expresiones frecuentes en la ubicación del código:

gcloud debug logpoints delete HighScoreService.java:105

Debug target not specified. Using default target: default-1
This command will delete the following logpoints:

LOCATION                   CONDITION            LOG_LEVEL  LOG_MESSAGE_FORMAT                                             ID
HighScoreService.java:105                       INFO       User {name} scored {newScore.score}.                           53aaa3bd8d2d7-b76f-feb5d
HighScoreService.java:105  newScore.score > 40  WARNING    Suspiciously high score ({newScore.score}) from user {name}  53aaa3bsdffd7-b56f-fasfg

Do you want to continue (Y/n)?  Y
Deleted 2 logpoints.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Stackdriver Debugger