Este producto no es compatible con el sitio Datadog seleccionado. ().
Exception Replay está disponible de forma general para Python, Java, .NET, PHP y está habilitado de forma predeterminada cuando sea compatible.

Descripción general

Exception Replay captura el contexto de ejecución y los valores de las variables locales cuando ocurre una excepción, lo que le ayuda a diagnosticar, reproducir y resolver problemas más rápido. Registra el estado circundante, incluyendo la traza de pila y las instantáneas de variables, y luego muestra estos datos directamente en Error Tracking junto con el resto de los detalles del problema.

Explorador de Error Tracking Exception Replay

Exception Replay está diseñado para su uso en producción. Las instantáneas están limitadas en frecuencia y los datos confidenciales se redactan automáticamente redacted Cuando está habilitado, espera excepciones en una aplicación y captura instantáneas de la traza de pila y las variables locales antes de enviarlos 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 captura solo excepciones basadas en APM. Requiere el Datadog Agent y una aplicación instrumentada con APM. Puede habilitarlo para todo un entorno, un servicio individual en la aplicación o un servicio específico mediante variables de entorno.

El método de habilitación depende de su versión del rastreador y de si Remote Configuration está disponible. Consulte la tabla a continuación para obtener más detalles.

Por entorno
(Masivo)
Por servicio
(En la aplicación)
Por servicio
(Variable de entorno)
Cómo habilitarHabilitado de forma predeterminadaPágina de configuraciónVariables de entorno
Versión del Agentv7.49.0+v7.49.0+v7.49.0+
Versiones mínimas del rastreadorPython ≥ 3.15.0
Java ≥ 1.54.0
.NET ≥ 3.29.0
PHP ≥ 1.19.0
Python ≥ 3.10.0
Java ≥ 1.48.0
.NET ≥ 3.29.0
PHP ≥ 1.14.0
Python ≥ 1.16.0
Java ≥ 1.47.0
.NET ≥ 2.53.0
PHP ≥ 1.12.1
¿Se requiere Remote Configuration?SíSíNo

Para habilitar Exception Replay en la aplicación, navegue a la página de Exception Replay Settings en Error Tracking, seleccione el entorno o servicio deseado y actívelo en Enabled.

Si la habilitación en la aplicación no está disponible, establezca la variable de entorno:

DD_EXCEPTION_REPLAY_ENABLED=true

Esto también se puede usar para anular la configuración en la aplicación y tiene prioridad cuando ambos están establecidos.

Crear un índice de registros para instantáneas de Exception Replay

Cree un índice de registros dedicado a las instantáneas de Exception Replay y configúrelo con la retención deseada y sin muestreo.

  • Establezca el filtro para que coincida con source:dd_debugger.
  • Asegúrese de que el índice tenga prioridad sobre otros índices que coincidan con esta etiqueta (la primera coincidencia gana).
¿Por qué crear un índice de registros? Las instantáneas de Exception Replay se emiten como registros enriquecidos con enlaces a los spans de APM de origen.

Si habilita la integración de código fuente de Datadog, puede ver vistas previas del código directamente dentro de su pila de Error Tracking trazas. Cuando se capturan las instantáneas de Exception Replay, puede pasar el cursor sobre los nombres de las variables en la vista previa del código para visualizar sus valores capturados.

Redacción de datos confidenciales

Exception Replay aplica una redacción automática basada en modos e identificadores para garantizar que los datos confidenciales estén protegidos antes de que las instantáneas estén disponibles. instantáneas estén disponibles.

Redacción basada en modo

Exception Replay tiene dos modos de redacción:

  • Strict Mode: Redacta todos los valores excepto números y booleanos.
  • Targeted Mode: Redacta patrones confidenciales conocidos como números de tarjetas de crédito, claves de API, direcciones IP y otra información de identificación personal (PII). También ejecuta un escáner de secretos de alta entropía que redacta automáticamente los secretos probables, los cuales aparecen como [REDACTED:HIGH_ENTROPY] en las instantáneas.

Estos modos de redacción no se pueden desactivar, solo cambiar, y Targeted Mode se aplica automáticamente en casos comunes. entornos de preproducción como staging o preprod.

Redacción basada en identificadores

Los valores de las variables asociados con identificadores confidenciales comunes (por ejemplo, password, accessToken y términos similares) se depuran antes de que las instantáneas salgan del servidor. Se integran reglas de depuración adicionales específicas del lenguaje en cada rastreador (por ejemplo, el rastreador de Python mantiene una lista de identificadores confidenciales predeterminados).

Puede ampliar el comportamiento de redacción mediante:

  • Redacción personalizada basada en identificadores
  • Reglas de redacción basadas en clases/tipos
  • Reglas de Sensitive Data Scanner

Consulte las instrucciones de Dynamic Instrumentation Sensitive Data Scrubbing y la documentación de Sensitive Data Scanner para obtener detalles de configuración.

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

Solución de problemas

Valores de variables faltantes

Las instantáneas de Exception Replay están limitadas a una instantánea por tipo de excepción por instancia por hora. En algunos entornos de ejecución, una instantánea solo se captura después de la segunda aparición de una excepción determinada.

Razones adicionales por las que una instantánea podría no aparecer

  • La reproducción de excepciones no está habilitada
  • La instantánea ocurrió fuera de la ventana de tiempo seleccionada
  • Exclusiones de paquetes de terceros (use DD_THIRD_PARTY_DETECTION_EXCLUDES para incluirlos)
  • Registros con source:dd_debugger faltantes debido a la configuración de retención de Log Index o a los Filtros de exclusión en los índices anteriores
  • La reproducción de excepciones no está disponible en la región FedRAMP
  • Java: En JDK 18 y versiones anteriores, es posible que no se admitan las clases compiladas con el marcador -parameters. Spring 6+, Spring Boot 3+ y Scala usan este marcador de forma predeterminada.
  • .NET: En hosts con FIPS habilitados, las versiones del tracer anteriores a la 3.55.0 no admiten Exception Replay. En Linux, la aplicación puede bloquearse. Actualice a la versión 3.55.0 del tracer o posterior para usar Exception Replay. En versiones anteriores, configure DD_EXCEPTION_REPLAY_ENABLED=false para evitar que se bloquee.

Utilice la consulta @error.debug_info_captured:true en Error Tracking Explorer para encontrar errores con Exception Replay instantáneas.

Mensajes WARN de BatchUploader en GovCloud (Java)

En sitios de GovCloud (app.ddog-gov.com), los rastreadores de Java pueden registrar mensajes WARN periódicos de com.datadog.debugger.uploader.BatchUploader con HTTP 403 y texto similar a This traffic is not permitted on your account. Esto es normal cuando se intentan realizar cargas relacionadas con el depurador en un sitio donde no se admiten Exception Replay, Dynamic Instrumentation y Code Origin para Spans. La funcionalidad principal de APM (trazas, métricas, perfiles, inyección de registros) no se ve afectada.

Para detener estos mensajes de registro, establezca las siguientes variables de entorno en el pod de la aplicación Java y reinicie la carga de trabajo:

DD_EXCEPTION_REPLAY_ENABLED=false
DD_DYNAMIC_INSTRUMENTATION_ENABLED=false
DD_CODE_ORIGIN_FOR_SPANS_ENABLED=false

Alternativamente, utilice las propiedades del sistema de la JVM:

-Ddd.exception.replay.enabled=false
-Ddd.dynamic.instrumentation.enabled=false
-Ddd.code.origin.for.spans.enabled=false

Para confirmar la corrección, verifique el JSON de inicio del rastreador (DATADOG TRACER CONFIGURATION) y compruebe que debugger_exception_enabled, debugger_enabled y debugger_span_origin_enabled sean todos false. Los mensajes WARN tienen una limitación de frecuencia de aproximadamente una vez cada cinco minutos, por lo que espere al menos ese tiempo después de reiniciar antes de confirmar que los mensajes se han detenido.

Lecturas adicionales