Información general

El SDK de RUM Android genera eventos que tienen métricas y atributos asociados. Las métricas son valores cuantificables que pueden utilizarse para mediciones relacionadas con el evento. Los atributos son valores no cuantificables que se utilizan para dividir los datos de métricas (agrupar por) en el análisis.

Cada evento de RUM tiene todos los atributos por defecto, por ejemplo, el tipo de dispositivo (device.type) e información del usuario como su nombre (usr.name) y su país (geo.country).

Existen métricas y atributos adicionales que son específicos de un determinado tipo de evento. Por ejemplo, la métrica view.time_spent está asociada a eventos de “vista” y el atributo resource.method está asociado a eventos de “recurso”.

Tipo de eventoRetenciónDescripción
Sesión30 díasUna sesión representa un recorrido real del usuario en tu aplicación móvil. Comienza cuando el usuario inicia la aplicación y permanece abierta mientras el usuario permanezca activo. Durante el recorrido del usuario, todos los eventos de RUM generados como parte de la sesión compartirán el mismo atributo session.id. Nota: La sesión se reinicia tras 15 minutos de inactividad. Si el sistema operativo desactiva la aplicación, puedes restablecer la sesión mientras la aplicación está en segundo plano.
Vista30 díasUna vista representa una única pantalla (o segmento de pantalla) en tu aplicación móvil. Una vista se inicia y se detiene cuando las devoluciones de llamadas a onActivityResumed y onActivityPaused son invocadas a través de la interfaz ActivityLifecycleCallbacks. Cada ocurrencia se clasifica como una vista distinta. Mientras un usuario permanece en una vista, los atributos de eventos de RUM (Errores, Recursos y Acciones) se adjuntan a la vista con un único view.id.
Recurso15 díasUn recurso representa solicitudes de red a hosts de origen, APIs y otros proveedores en tu aplicación móvil. Todas las solicitudes generadas durante una sesión de usuario se adjuntan a la vista con un único resource.id.
Error30 díasUn error representa una excepción o un fallo emitido por la aplicación móvil asociado a la vista en la que se ha generado.
Acción30 díasUna acción representa la actividad del usuario en tu aplicación móvil (como iniciar la aplicación, tocar, deslizar o retroceder). Cada acción está asociada a un único action.id asociado a la vista en la que se genera.
Tarea larga15 díasSe genera un evento de tarea larga para cualquier tarea de la aplicación que bloquee el subprocesp principal durante más tiempo que el umbral de duración especificado.

El siguiente diagrama ilustra la jerarquía de eventos de RUM:

Jerarquía de eventos RUM

Lanzamiento de la aplicación

Durante la inicialización, el SDK de RUM Android crea una vista llamada “ApplicationLaunch”. La hora de inicio de esta vista coincide con el inicio del proceso de Android, y se puede utilizar para realizar un seguimiento de la hora de lanzamiento de tu aplicación.

La vista ApplicationLaunch incluye logs, acciones y recursos creados antes de tu primera llamada a startView. Utiliza la duración de esta vista para determinar el tiempo hasta la primera vista. Esta vista tiene una acción, application_start, con una duración que depende de la versión de Android:

  • En Android 7.0 y posterior, esta vista/acción captura el periodo antes de que se ejecute cualquier código de aplicación (justo antes de Application.onCreate) y cuando se registra el primer evento de RUM.
  • En versiones anteriores a Android 7.0, la vista/acción captura el periodo entre que se carga la clase RumFeature y cuando se registra el primer evento de RUM.

Atributos predeterminados

RUM recopila atributos comunes para todos los eventos y para los atributos específicos de cada evento que se enumeran a continuación automáticamente. También puedes optar por enriquecer tus datos de sesión de usuario rastreando eventos adicionales o añadiendo atributos personalizados a eventos predeterminados específicos para tus necesidades de monitorización de aplicaciones y análisis de negocio.

Atributos esenciales comunes

Nombre del atributoTipoDescripción
dateenteroInicio del evento en milisegundos desde la época.
typecadenaEl tipo de evento (por ejemplo, view o resource).
servicecadenaEl nombre del servicio unificado de esta aplicación utilizado para correlacionar las sesiones del usuario.
application.idcadenaEl ID de la aplicación Datadog.
application.namecadenaEl nombre de la aplicación Datadog.

Dispositivo

Los siguientes atributos relacionados con dispositivos se adjuntan automáticamente a todos los eventos recopilados por Datadog:

Nombre del atributoTipoDescripción
device.typecadenaEl tipo de dispositivo notificado por el dispositivo (System User-Agent).
device.brandcadenaLa marca del dispositivo notificada por el dispositivo (System User-Agent).
device.modelcadenaEl modelo del dispositivo notificado por el dispositivo (System User-Agent).
device.namecadenaEl nombre del dispositivo notificado por el dispositivo (System User-Agent).

Conectividad

Los siguientes atributos relacionados con la red se adjuntan automáticamente a los eventos de Recursos y Errores recopilados por Datadog:

Nombre del atributoTipoDescripción
connectivity.statuscadenaEstado de la accesibilidad a la red del dispositivo (connected, not connected o maybe).
connectivity.interfacescadenaLa lista de interfaces de red disponibles (por ejemplo, bluetooth, cellular, ethernet o wifi).
connectivity.cellular.technologycadenaEl tipo de tecnología de radio utilizada para la conexión celular.
connectivity.cellular.carrier_namecadenaEl nombre del operador de la SIM.

Sistema operativo

Los siguientes atributos relacionados con el sistema operativo se asocian automáticamente a todos los eventos recopilados por Datadog:

Nombre del atributoTipoDescripción
os.namecadenaEl nombre del sistema operativo notificado por el dispositivo (System User-Agent).
os.versioncadenaLa versión del sistema operativo notificada por el dispositivo (System User-Agent).
os.version_majorcadenaLa versión principal del sistema operativo notificada por el dispositivo (System User-Agent).

Geolocalización

Los siguientes atributos están relacionados con la geolocalización de las direcciones IP.

Nota: Si quieres dejar de recopilar atributos de geolocalización, cambia la configuración en detalles de la aplicación.

Nombre del atributoTipoDescripción
geo.countrycadenaNombre del país.
geo.country_iso_codecadenaCódigo ISO del país (por ejemplo, US para Estados Unidos o FR para Francia).
geo.country_subdivisioncadenaNombre del primer nivel de subdivisión del país (por ejemplo, California en Estados Unidos o el departamento Sarthe en Francia).
geo.continent_codecadenaCódigo ISO del continente (EU, AS, NA, AF, AN, SA o OC).
geo.continentcadenaNombre del continente (Europe, Australia, North America, Africa, Antarctica, South America o Oceania).
geo.citycadenaEl nombre de la ciudad (por ejemplo, San Francisco, Paris o New York).

Atributos globales del usuario

Puedes activar el rastreo de la información de usuario globalmente para recopilar y aplicar atributos de usuario a todos los eventos RUM.

Nombre del atributoTipoDescripción
user.idcadenaIdentificador del usuario.
usr.namecadenaNombre del usuario.
usr.emailcadenaCorreo electrónico del usuario.

Métricas y atributos específicos del evento

Las métricas son valores cuantificables que pueden utilizarse para realizar mediciones relacionadas con el evento. Los atributos son valores no cuantificables que se utilizan para segmentar los datos de las métricas (agrupar por) en los análisis.

Métricas de sesión

MétricaTipoDescripción
session.time_spentnúmero (ns)Tiempo empleado en una sesión.
session.view.countnúmeroTotal de vistas recopiladas para esta sesión.
session.error.countnúmeroTotal de errores recopilados para esta sesión.
session.resource.countnúmeroTotal de recursos recopilados para esta sesión.
session.action.countnúmeroTotal de acciones recopiladas para esta sesión.
session.long_task.countnúmeroRecuento de todas las tareas largas recopiladas en esta sesión.

Atributos de la sesión

Nombre del atributoTipoDescripción
session.idcadenaID único de la sesión.
session.typecadenaTipo de sesión (user).
session.is_activebooleanoIndica si la sesión está actualmente activa. La sesión finaliza si un usuario sale de la aplicación o cierra la ventana del navegador y expira tras 4 horas de actividad o 15 minutos de inactividad.
session.initial_view.urlcadenaURL de la vista inicial de la sesión.
session.initial_view.namecadenaNombre de la vista inicial de la sesión.
session.last_view.urlcadenaURL de la última vista de la sesión.
session.last_view.namecadenaNombre de la última vista de la sesión.
session.ipcadenaDirección IP de la sesión extraída de la conexión TCP de la ingesta. Si deseas dejar de recopilar este atributo, cambia la configuración en detalles de la aplicación.
session.useragentcadenaInformación del agent de usuario del sistema para interpretar la información del dispositivo.

Ver métricas

Los eventos de acción, error, recurso y tarea larga de RUM contienen información sobre el evento de vista de RUM activo en el momento de la recopilación.

MétricaTipoDescripción
view.time_spentnúmero (ns)Tiempo empleado en esta vista.
view.long_task.countnúmeroTotal de tareas largas recopiladas para esta vista.
view.error.countnúmeroTotal de errores recopilados para esta vista.
view.resource.countnúmeroTotal de recursos recopilados para esta vista.
view.action.countnúmeroTotal de acciones recopiladas para esta vista.
view.is_activebooleanoIndica si la vista correspondiente a este evento se considera activa.

Ver atributos

Nombre del atributoTipoDescripción
view.idcadenaID único de la vista inicial correspondiente al evento.
view.urlcadenaNombre convencional de la clase correspondiente al evento.
view.namecadenaNombre personalizable de la vista correspondiente al evento.

Métricas de recursos

MétricaTipoDescripción
durationnúmero (ns)Tiempo total empleado en cargar el recurso.
resource.sizenúmero (bytes)Tamaño del recurso.
resource.connect.durationnúmero (ns)Tiempo empleado en establecer una conexión con el servidor (connectEnd - connectStart).
resource.ssl.durationnúmero (ns)Tiempo empleado por el protocolo TLS. Si la última solicitud no es sobre HTTPS, esta métrica no aparece (connectEnd - secureConnectionStart).
resource.dns.durationnúmero (ns)Tiempo empleado en resolver el nombre DNS de la última solicitud (domainLookupEnd - domainLookupStart).
resource.redirect.durationnúmero (ns)Tiempo empleado en las siguientes solicitudes HTTP (redirectEnd - redirectStart).
resource.first_byte.durationnúmero (ns)Tiempo de espera empleado para recibir el primer byte de respuesta (responseStart - RequestStart).
resource.download.durationnúmero (ns)Tiempo empleado para descargar la respuesta (responseEnd - responseStart).

Atributos del recurso

AtributoTipoDescripción
resource.idcadenaIdentificador único del recurso.
resource.typecadenaEl tipo de recurso que se recopila (por ejemplo, xhr, image, font, css o js).
resource.methodcadenaEl método HTTP (por ejemplo, POST, GET, PATCH o DELETE).
resource.status_codenúmeroEl código de estado de la respuesta.
resource.urlcadenaLa URL del recurso.
resource.provider.namecadenaEl nombre del proveedor de recursos. De forma predeterminada es unknown.
resource.provider.domaincadenaEl dominio del proveedor del recurso.
resource.provider.typecadenaEl tipo de proveedor del recurso (por ejemplo, first-party, cdn, ad o analytics).

Atributos de error

Los errores de front-end se recopilan con Real User Monitoring (RUM). El mensaje de error y el stack trace se incluyen cuando están disponibles.

AtributoTipoDescripción
error.sourcecadenaProcedencia del error (por ejemplo, webview, logger o network).
error.typecadenaEl tipo de error (o código de error en algunos casos).
error.messagecadenaUn mensaje conciso y legible de una línea que explica el evento.
error.stackcadenaLa stack trace o información complementaria sobre el error.
error.issue_idcadenaLa stack trace o información complementaria sobre el error.

Errores de red

Los errores de red incluyen información sobre solicitudes HTTP fallidas. También se recogen las siguientes facetas:

AtributoTipoDescripción
error.resource.status_codenúmeroEl código de estado de la respuesta.
error.resource.methodcadenaEl método HTTP (por ejemplo, POST o GET).
error.resource.urlcadenaLa URL del recurso.
error.resource.provider.namecadenaEl nombre del proveedor de recursos. De forma predeterminada es unknown.
error.resource.provider.domaincadenaEl dominio del proveedor del recurso.
error.resource.provider.typecadenaEl tipo de proveedor del recurso (por ejemplo, first-party, cdn, ad o analytics).

Métricas del tiempo de acción

MétricaTipoDescripción
action.loading_timenúmero (ns)El tiempo de carga de la acción.
action.long_task.countnúmeroTotal de tareas largas recopiladas para esta acción.
action.resource.countnúmeroTotal de recursos recopilados para esta acción.
action.error.countnúmeroTotal de errores recopilados para esta acción.

Atributos de la acción

AtributoTipoDescripción
action.idcadenaUUID de la acción del usuario.
action.typecadenaTipo de acción del usuario (por ejemplo, tap o application_start).
action.namecadenaNombre de la acción del usuario.
action.target.namecadenaElemento con el que ha interactuado el usuario. Solo para acciones recopiladas automáticamente.

Almacenamiento de datos

Antes de que el dato se suba a Datadog, se almacena en formato de texto en el directorio de la caché de tu aplicación. Esta carpeta de la caché está protegida por Android’s Application Sandbox, lo que significa que en la mayoría de los dispositivos estos datos no pueden ser leídos por otras aplicaciones. Sin embargo, si el dispositivo móvil está rooteado o alguien manipula el núcleo de Linux, los datos almacenados pueden llegar a ser legibles.

Carga de datos

El SDK para RUM Android te permite obtener los datos que necesitas en Datadog teniendo en cuenta el impacto en el ancho de banda del usuario. El SDK de Datadog agrupa y carga eventos de la siguiente manera:

  • En event collected (evento recopilado), el SDK de Datadog añade eventos sin comprimir a un archivo por lotes (con un formato de codificación tag-length-value, o TLV)
  • En upload (carga) (cuando el lote se considera “cerrado”), el SDK de Datadog:
    • Lee el lote y extrae eventos
    • Elimina los eventos de Vista redundantes en RUM (sin optimizaciones en otras pistas)
    • Construye cargas útiles específicas para cada pista
    • Comprime la carga útil y la envía

Compatible con el modo de arranque directo

Si tu aplicación es compatible con el Modo de arranque directo, ten en cuenta que los datos capturados antes de desbloquear el dispositivo no se capturarán, ya que el almacenamiento cifrado de credenciales aún no estará disponible.

Referencias adicionales