RUM para Roku no está disponible en el sitio US1-FED de Datadog.

Información general

Datadog Real User Monitoring (RUM) te permite visualizar y analizar el rendimiento en tiempo real y los recorridos de los usuarios individuales de tu canal.

El SDK de Datadog Roku admite canales de BrightScript para Roku OS 10 y posterior.

Configuración

  1. Declarar el SDK como dependencia.
  2. Especificar los detalles de la aplicación en Datadog.
  3. Inicializar la biblioteca.
  4. Instrumentar el canal.

Declarar el SDK como dependencia

Utilización de ROPM (recomendado)

ROPM es un gestor de paquetes para la plataforma Roku (basado en NPM). Si aún no estás usando ROPM en tu proyecto de Roku, lee tu Guía Empezando. Una vez que tu proyecto esté configurado para usar ROPM, puedes usar el siguiente comando para instalar la dependencia de Datadog:

ropm install datadog-roku

Configuración manual

Si tu proyecto no utiliza ROPM, instala la biblioteca manualmente al descargar el archivo zip del SDK de Roku y descomprimirlo en la carpeta raíz de tu proyecto.

Asegúrate de que tienes una subcarpeta roku_modules/datadogroku en las carpetas components y source de tu proyecto.

Especificar los detalles de la aplicación en Datadog

  1. Ve a Digital Experience > Add an Application (Experiencia digital > Añadir una aplicación).

  2. Selecciona Roku como tipo de aplicación e introduce un nombre de aplicación para generar un ID de aplicación de Datadog y un token de cliente únicos.

  3. Para deshabilitar la recopilación automática de datos del usuario, ya sea para la IP del cliente o los datos de geolocalización, desmarca las casillas para esas configuraciones. Para obtener más información, consulta Datos recopilados de RUM Roku.

    Crear una aplicación RUM para Roku en Datadog

Para asegurar la seguridad de tus datos, debes utilizar un token de cliente. Si solo utilizaras claves de API de Datadog para configurar la biblioteca dd-sdk-roku, estarían expuestos del lado del cliente en el código BrightScript del canal de Roku.

Para obtener más información sobre cómo configurar un token de cliente, consulta la Documentación sobre el token de cliente.

Inicializar la biblioteca

En el fragmento de inicialización, establece un nombre de entorno. Para obtener más información, consulta Uso de etiquetas.

sub RunUserInterface(args as dynamic)
    screen = CreateObject("roSGScreen")
    scene = screen.CreateScene("MyScene")
    screen.show()

    datadogroku_initialize({
        clientToken: "<CLIENT_TOKEN>",
        applicationId: "<APPLICATION_ID>"
        site: "us1",
        env: "<ENV_NAME>",
        sessionSampleRate: 100, ' the percentage (integer) of sessions to track
        launchArgs: args
    })

    ' complete your channel setup here
end sub

sub RunUserInterface(args as dynamic)
    screen = CreateObject("roSGScreen")
    scene = screen.CreateScene("MyScene")
    screen.show()

    datadogroku_initialize({
        clientToken: "<CLIENT_TOKEN>",
        applicationId: "<APPLICATION_ID>"
        site: "eu1",
        env: "<ENV_NAME>",
        sessionSampleRate: 100, ' the percentage (integer) of sessions to track
        launchArgs: args
    })

    ' complete your channel setup here
end sub

sub RunUserInterface(args as dynamic)
    screen = CreateObject("roSGScreen")
    scene = screen.CreateScene("MyScene")
    screen.show()

    datadogroku_initialize({
        clientToken: "<CLIENT_TOKEN>",
        applicationId: "<APPLICATION_ID>"
        site: "us3",
        env: "<ENV_NAME>",
        sessionSampleRate: 100, ' the percentage (integer) of sessions to track
        launchArgs: args
    })

    ' complete your channel setup here
end sub

sub RunUserInterface(args as dynamic)
    screen = CreateObject("roSGScreen")
    scene = screen.CreateScene("MyScene")
    screen.show()

    datadogroku_initialize({
        clientToken: "<CLIENT_TOKEN>",
        applicationId: "<APPLICATION_ID>"
        site: "us5",
        env: "<ENV_NAME>",
        sessionSampleRate: 100, ' the percentage (integer) of sessions to track
        launchArgs: args
    })

    ' complete your channel setup here
end sub

sub RunUserInterface(args as dynamic)
    screen = CreateObject("roSGScreen")
    scene = screen.CreateScene("MyScene")
    screen.show()

    datadogroku_initialize({
        clientToken: "<CLIENT_TOKEN>",
        applicationId: "<APPLICATION_ID>"
        site: "ap1",
        env: "<ENV_NAME>",
        sessionSampleRate: 100, ' the percentage (integer) of sessions to track
        launchArgs: args
    })

    ' complete your channel setup here
end sub

Muestrear sesiones de RUM

Para controlar los datos que tu aplicación envía a Datadog RUM, puedes especificar una tasa de muestreo para las sesiones de RUM mientras inicializas el SDK de RUM Roku como un porcentaje entre 0 y 100. Puedes especificar la tasa con el parámetro sessionSampleRate.

Instrumentar el canal

Consulta Rastreo de recursos de RUM para activar el rastreo automático de todos tus recursos, y Mejorar sesiones de usuario para añadir información personalizada global o del usuario a tus eventos.

Rastrear vistas de RUM

Para dividir sesiones de usuario en pasos lógicos, inicia manualmente una Vista con el siguiente código. Cada navegación a una nueva pantalla dentro de tu canal debe corresponder a una nueva Vista de RUM.

    viewName = "VideoDetails"
    viewUrl = "components/screens/VideoDetails.xml"
    m.global.datadogRumAgent.callfunc("startView", viewName, viewUrl)

Rastreo de las acciones de RUM

Las acciones de RUM representan las interacciones que tus usuarios tienen con tu canal. Puedes enviar acciones a Datadog de la siguiente manera:

    targetName = "playButton" ' the name of the SG Node the user interacted with
    actionType = "click" ' the type of interaction, should be one of "click", "back", or "custom" 
    m.global.datadogRumAgent.callfunc("addAction", { target: targetName, type: actionType})

Rastreo de errores de RUM

Siempre que realices una operación que pueda lanzar una excepción, puedes reenviar el error a Datadog de la siguiente manera:

    try
        doSomethingThatMightThrowAnException()
    catch error
        m.global.datadogRumAgent.callfunc("addError", error)
    end try

Referencias adicionales

[10]: