Configuration avancée de RUM pour Roku
La fonctionnalité RUM pour Roku n'est pas disponible pour le site US1-FED de Datadog.
Présentation
Si vous n’avez pas encore configuré le SDK, consultez les instructions de configuration intégrées à l’application ou reportez-vous à la documentation sur la configuration de RUM pour Roku.
Suivre les ressources RUM
roUrlTransfer
Les requêtes réseau effectuées directement avec un nœud roUrlTransfer
doivent être suivies.
Pour les requêtes synchrones, utilisez le wrapper datadogroku_DdUrlTransfer
de Datadog afin de suivre automatiquement la ressource. Ce wrapper prend en charge la plupart des fonctionnalités du composant roUrlTransfer
, mais aucun élément lié aux appels réseau asynchrones.
Vous pouvez par exemple effectuer un appel GetToString
comme suit :
ddUrlTransfer = datadogroku_DdUrlTransfer(m.global.datadogRumAgent)
ddUrlTransfer.SetUrl(url)
ddUrlTransfer.EnablePeerVerification(false)
ddUrlTransfer.EnableHostVerification(false)
result = ddUrlTransfer.GetToString()
Pour les requêtes asynchrones, l’instrumentation automatique n’est pas prise en charge. Vous devez suivre la ressource manuellement. L’extrait de code suivant indique comment signaler la requête comme ressource RUM :
sub performRequest()
m.port = CreateObject("roMessagePort")
request = CreateObject("roUrlTransfer")
' setup the node url, headers, ...
timer = CreateObject("roTimespan")
timer.Mark()
request.AsyncGetToString()
while (true)
msg = wait(1000, m.port)
if (msg <> invalid)
msgType = type(msg)
if (msgType = "roUrlEvent")
if (msg.GetInt() = 1) ' transfer complete
durationMs& = timer.TotalMilliseconds()
transferTime# = datadogroku_millisToSec(durationMs&)
httpCode = msg.GetResponseCode()
status = "ok"
if (httpCode < 0)
status = msg.GetFailureReason()
end if
resource = {
url: requestUrl
method: "GET"
transferTime: transferTime#
httpCode: httpCode
status: status
}
m.global.datadogRumAgent.callfunc("addResource", resource)
end if
end if
end if
end while
end sub
Diffuser des ressources
Lorsque vous utilisez un nœud Video
ou Audio
pour diffuser du contenu multimédia, vous pouvez transmettre à Datadog tous les roSystemLogEvent
que vous recevez comme suit :
sysLog = CreateObject("roSystemLog")
sysLog.setMessagePort(m.port)
sysLog.enableType("http.error")
sysLog.enableType("http.complete")
while(true)
msg = wait(0, m.port)
if (type(msg) = "roSystemLogEvent")
m.global.datadogRumAgent.callfunc("addResource", msg.getInfo())
end if
end while
Enrichir des sessions utilisateur
Une fois votre canal Roku instrumenté avec RUM, vous pouvez enrichir les informations sur les sessions utilisateur et contrôler plus précisément les attributs recueillis en suivant des événements personnalisés.
En plus des attributs RUM par défaut recueillis automatiquement par le SDK RUM Roku, vous pouvez ajouter des informations contextuelles supplémentaires, comme des attributs personnalisés, à vos événements RUM afin d’enrichir la visibilité dans Datadog. Les attributs personnalisés permettent de filtrer et de regrouper les informations sur le comportement utilisateur observé (comme la valeur d’un panier, le niveau du marchand ou la campagne publicitaire) en fonction d’informations au niveau du code (comme les services backend, la chronologie de session, les logs d’erreur ou la santé du réseau).
Identifier vos utilisateurs
L’ajout des informations utilisateur à vos sessions RUM facilite :
- le suivi du parcours d’un utilisateur donné ;
- l’identification des utilisateurs les plus touchés par les erreurs ;
- la surveillance des performances de vos utilisateurs les plus importants.
Les attributs suivants sont facultatifs, mais nous vous conseillons d’en spécifier au moins un :
Attribut | Type | Description |
---|
id | Chaîne | Identifiant d’utilisateur unique. |
name | Chaîne | Nom courant de l’utilisateur, affiché par défaut dans l’interface RUM. |
email | Chaîne | Adresse e-mail de l’utilisateur, affichée dans l’interface RUM si le nom de l’utilisateur n’est pas connu. Elle sert également à récupérer des Gravatars. |
Pour identifier des sessions utilisateur, utilisez le champ global datadogUserInfo
après avoir initialisé le SDK, par exemple :
m.global.setField("datadogUserInfo", { id: 42, name: "Abcd Efg", email: "abcd.efg@example.com"})
Suivi d’attributs globaux personnalisés
En plus des attributs par défaut recueillis automatiquement par le SDK, vous pouvez ajouter des informations contextuelles supplémentaires, comme des attributs personnalisés, à vos logs et événements RUM afin d’enrichir la visibilité dans Datadog. Les attributs personnalisés permettent de filtrer et de regrouper les informations sur le comportement utilisateur observé (selon la valeur d’un panier, le niveau du marchand ou la campagne publicitaire, par exemple) en fonction d’informations au niveau du code (comme les services backend, la chronologie de session, les logs d’erreur et la santé du réseau).
m.global.setField("datadogContext", { foo: "Some value", bar: 123})
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: