Exception Replay en Error Tracking
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.
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.
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 habilitar | Habilitado por defecto | Página de configuración | Variables de entorno |
| Versión del Agent | v7.49.0+ | v7.49.0+ | v7.49.0+ |
| Versiones mínimas de rastreador | Python ≥ 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? | Sí | Sí | 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
Más enlaces, artículos y documentación útiles: