Este producto no es compatible con el sitio Datadog seleccionado. ().
Exception Replay está generalmente disponible para Python, Java, .NET, PHP, y está habilitada por defecto cuando es compatible.

Información general

Exception Replay captura el contexto de ejecución y los valores de las variables locales cuando se produce una excepción, ayudándote a diagnosticar, reproducir y resolver problemas más rápidamente. Registra el estado circundante, incluido el stack trace y los snapshots de variables y, luego, muestra estos datos directamente en Error Tracking junto con el resto de los detalles del problema.

Error Tracking Explorer con Exception Replay

Exception Replay está diseñado para su uso en producción. Los snapshots tienen una velocidad limitada y los datos confidenciales se redactan automáticamente. Cuando está activada, espera excepciones en una aplicación y captura snapshots del stack trace y las variables locales antes de reenviarlas a Datadog.

¿Qué productos son compatibles? Exception Replay solo está disponible para excepciones basadas en APM y no admite errores de Logs o RUM.

Requisitos y configuración

Exception Replay es compatible con Python, Java, .NET y PHP, y solo captura excepciones basadas en APM. Requiere el Datadog Agent y una aplicación instrumentada por APM. Se puede activar para todo un entorno, un servicio individual dentro de la aplicación, o un servicio específico utilizando variables de entorno.

El método de activación depende de la versión del rastreador y de si está disponible Remote Configuration. Consulta la tabla para más detalles.

Por entorno
(en bloque)
Por servicio
(dentro de la aplicación)
Por servicio
(Variable de entorno)
Cómo habilitarHabilitado por defectoPágina de configuraciónVariables de entorno
Versión del Agentv7.49.0+v7.49.0+v7.49.0+
Versiones mínimas de rastreadorPython ≥ 3.15.0
Java ≥ 1.54.0
.NET ≥ 3.29.0
Python ≥ 3.10.0
Java ≥ 1.48.0
.NET ≥ 3.29.0
Python ≥ 1.16.0
Java ≥ 1.47.0
.NET ≥ 2.53.0
PHP ≥ 1.12.1
¿Requiere Remote Configuration?No

Para activar Exception Replay en la aplicación, ve a la página Settings (Configuración) de Exception Replay en Error Tracking, selecciona el entorno o servicio deseado y cámbialo a Enabled (Habilitado).

Si la habilitación dentro de la aplicación no está disponible, establece la variable de entorno:

DD_EXCEPTION_REPLAY_ENABLED=true

También se puede utilizar para anular la configuración dentro de la aplicación y tiene prioridad cuando se establecen ambas.

Crear un índice de logs para los snapshots de Exception Replay

Crea un índice de logs dedicado a los snapshots de Exception Replay y configúralo con la retención deseada y sin muestreo.

  • Ajusta el filtro para que coincida con source:dd_debugger.
  • Asegúrate de que el índice tiene prioridad sobre otros índices que coincidan con esta etiqueta (la primera coincidencia gana).
¿Por qué crear un índice de logs? Los snapshots de Exception Replay se emiten como logs enriquecidos con enlaces a los tramos originarios de APM.

Vincular tu código fuente

Si habilitas la integración de código fuente de Datadog, podrás ver vistas previas del código directamente dentro de los stack traces de Error Tracking. Cuando se capturan snapshots de Exception Replay, puedes pasar el cursor sobre los nombres de las variables en la vista previa del código para ver sus valores capturados.

Redacción de datos confidenciales

Exception Replay aplica una redacción automática basada en modos e identificadores para garantizar la protección de los datos confidenciales antes de que los snapshots estén disponibles.

Redacción por modos

Exception Replay tiene dos modos de redacción:

  • Modo estricto: redacta todos los valores excepto números y booleanos.
  • Modo dirigido: redacta patrones confidenciales conocidos como números de tarjetas de crédito, claves de API, IPs y otra PII.

Estos modos de redacción no pueden desactivarse, solo conmutarse, y el modo específico se aplica automáticamente en entornos de preproducción como staging o preprod.

Redacción basada en identificadores

Los valores de las variables asociados a identificadores confidenciales comunes (por ejemplo, password, accessToken y términos similares) se depuran antes de que los snapshots salgan del host. Cada rastreador incorpora reglas adicionales de redacción específicas del lenguaje (por ejemplo, el rastreador de Python mantiene una lista de identificadores confidenciales por defecto).

Puedes ampliar el comportamiento de redacción a través de:

  • Redacción personalizada basada en identificadores
  • Reglas de redacción por clase/tipo
  • Reglas de Sensitive Data Scanner

Consulta la documentación Dynamic Instrumentation Sensitive Data Scrubbing instructions y Sensitive Data Scanner para más detalles sobre la configuración.

¿Por qué la instrucciones de DI? Exception Replay se basa en Dynamic Instrumentation (DI), por lo que sus opciones de configuración de depuración de datos confidenciales también se aplican aquí.

Solucionar problemas

Valores faltantes de las variables

Los snapshots de Exception Replay están limitados a un snapshot por tipo de excepción, por instancia y por hora. En algunos tiempos de ejecución, un snapshot solo se captura después de la segunda ocurrencia de una excepción dada.

Otras razones por las que puede no aparecer un snapshot

  • Exception Replay no habilitada
  • El snapshot se produjo fuera del intervalo temporal seleccionado
  • Exclusiones de paquetes de terceros (utiliza DD_THIRD_PARTY_DETECTION_EXCLUDES para incluirlos)
  • Logs en los que falta source:dd_debugger debido a la configuración de retención del Índice de logs o Filtros de exclusión en índices anteriores
  • Exception Replay no está disponible en la región FedRAMP
  • Java: En JDK 18 o anteriores, es posible que las clases compiladas con el indicador -parameters no sean compatibles. Spring 6+, Spring Boot 3+ y Scala utilizan este indicador por defecto.

Utiliza la consulta @error.debug_info_captured:true en Error Tracking Explorer para encontrar errores con snapshots de Exception Replay.

Referencias adicionales