- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
まだ SDK をインストールしていない場合は、アプリ内セットアップ手順に従うか、Roku RUM セットアップドキュメントを参照してください。
roUrlTransfer
roUrlTransfer
ノードで直接行われたネットワークリクエストは追跡する必要があります。
同期リクエストの場合は、Datadog の datadogroku_DdUrlTransfer
ラッパーを使用して、リソースを自動的に追跡することができます。このラッパーは roUrlTransfer
コンポーネントのほとんどの機能をサポートしていますが、非同期ネットワーク呼び出しに関連するものはサポートしていません。
例えば、GetToString
の呼び出しを行う方法を紹介します。
ddUrlTransfer = datadogroku_DdUrlTransfer(m.global.datadogRumAgent)
ddUrlTransfer.SetUrl(url)
ddUrlTransfer.EnablePeerVerification(false)
ddUrlTransfer.EnableHostVerification(false)
result = ddUrlTransfer.GetToString()
非同期リクエストの場合、自動インスツルメンテーションはサポートされていません。リソースを手動で追跡する必要があります。次のコードスニペットは、リクエストを 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
Video
や Audio
ノードを使用してメディアをストリーミングする場合、以下のように受信したすべての roSystemLogEvent
を Datadog に転送することができます。
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
RUM でインスツルメンテーションされたチャンネルは、カスタムイベントを追跡することによって、ユーザーのセッション情報をさらにリッチ化し、収集される属性をより細かく制御することができます。
RUM Roku SDK により自動的に取得されるデフォルトの RUM 属性に加えて、カスタム属性などのコンテキスト情報を RUM イベントに追加し、Datadog 内の可観測性を強化することも可能です。カスタム属性により、コードレベルの情報 (バックエンドサービス、セッションタイムライン、エラーログ、ネットワークの状態など) を利用して、観察されたユーザー行動 (カート内の金額、マーチャントティア、広告キャンペーンなど) をフィルターしてグループ化することができます。
RUM セッションにユーザー情報を追加すると、次のことが簡単になります。
以下の属性は任意ですが、少なくとも 1 つ提供する必要があります。
属性 | タイプ | 説明 |
---|---|---|
id | 文字列 | 一意のユーザー識別子。 |
name | 文字列 | RUM UI にデフォルトで表示されるユーザーフレンドリーな名前。 |
文字列 | ユーザー名が存在しない場合に RUM UI に表示されるユーザーのメール。Gravatar をフェッチするためにも使用されます。 |
ユーザーセッションを特定するには、SDK を初期化した後などに、datadogUserInfo
グローバルフィールドを使用します。
m.global.setField("datadogUserInfo", { id: 42, name: "Abcd Efg", email: "abcd.efg@example.com"})
SDK により自動的に取得されるデフォルトの属性に加えて、カスタム属性などのコンテキスト情報をログと RUM イベントに追加し、Datadog 内の可観測性を強化することも可能です。カスタム属性により、コードレベルの情報 (バックエンドサービス、セッションタイムライン、エラーログ、ネットワークの状態など) を利用して、観察されたユーザー行動 (カート内の金額、マーチャントティア、広告キャンペーンなど) をフィルターしてグループ化することができます。
m.global.setField("datadogContext", { foo: "Some value", bar: 123})
お役に立つドキュメント、リンクや記事: