Repetición de excepciones en Error Tracking
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.
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 habilitar | Habilitado de forma predeterminada | Página de configuración | Variables de entorno |
| Versión del Agent | v7.49.0+ | v7.49.0+ | v7.49.0+ |
| Versiones mínimas del rastreador | Python ≥ 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.
Vincule su código fuente
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
Documentación, enlaces y artículos útiles adicionales: