Roku 로그 수집 (Log Collection)
참고: 다음 Datadog 사이트 사용자에게 중요한 안내입니다: app.ddog-gov.com, us2.ddog-gov.com
이 제품은 선택하신 Datadog 사이트에서는 지원되지 않아요. ({% placeholder "user-datadog-site-name" /%})
참고: 다음 Datadog 사이트 사용자에게 중요한 안내입니다: app.datadoghq.com, us3.datadoghq.com, us5.datadoghq.com, app.datadoghq.eu, ap1.datadoghq.com, ap2.datadoghq.com, uk1.datadoghq.com
Roku 로그 수집은 Preview 상태예요.
Datadog의 dd-sdk-roku 로깅 라이브러리로 Roku 채널에서 Datadog로 로그를 보내고 다음 기능을 활용해 보세요:
- 로그를 기본적으로 JSON 형식으로 Datadog에 보내요.
- 보내는 각 로그에
context와 사용자 지정 속성을 추가해요. - 실제 클라이언트 IP 주소와 User-Agent를 기록해요.
- 자동 대량 게시(bulk posts)로 네트워크 사용을 최적화해요.
출처: 문서
본문
설정 (Setup)
-
ROPM으로 프로젝트에 의존성을 추가하거나 최신 zip 아카이브를 내려받아 프로젝트에 압축을 풀어요.ropm install datadog-roku -
Datadog UI에서 새 RUM 애플리케이션을 만들 때 생성된 Datadog 클라이언트 토큰과 Application ID로 라이브러리를 초기화하세요(자세한 내용은 Roku RUM 수집 시작하기 문서 참고). 보안상 이유로 클라이언트 토큰을 사용해야 해요: Datadog API 키는 Roku 채널 패키지에서 클라이언트 측에 노출되므로
dd-sdk-roku라이브러리를 설정하는 데 사용할 수 없어요.
클라이언트 토큰 설정에 대한 자세한 내용은 클라이언트 토큰 문서를 참고하세요.
sub RunUserInterface(args as dynamic)
screen = CreateObject("roSGScreen")
scene = screen.CreateScene("MyScene")
screen.show()
datadogroku_initialize({
clientToken: "<CLIENT_TOKEN>",
applicationId: "<APPLICATION_ID>"
site: "<YOUR_ROKU_SITE>",
env: "<ENV_NAME>",
sessionSampleRate: 100, ' the percentage (integer) of sessions to track
launchArgs: args
})
' complete your channel setup here
end sub
(선택) 애플리케이션을 작성할 때 전역 노드에 datadogVerbosity 속성을 설정하면 개발 로그를 활성화할 수 있어요. 라이브러리 내부 메시지 중 제공된 레벨보다 같거나 높은 우선순위를 가진 모든 메시지가 Roku 기기의 telnet 출력으로 기록돼요:
' 0 = none; 1 = error; 2 = warning; 3 = info; 4 = verbose;
m.globalNode.addFields({ datadogVerbosity: 2 })
다음 함수 중 하나로 사용자 지정 로그 항목을 Datadog로 직접 보낼 수 있어요:
msg = "A log message"
m.global.datadogLogsAgent.callfunc("logOk", msg, {})
m.global.datadogLogsAgent.callfunc("logDebug", msg, {})
m.global.datadogLogsAgent.callfunc("logInfo", msg, {})
m.global.datadogLogsAgent.callfunc("logNotice", msg, {})
m.global.datadogLogsAgent.callfunc("logWarn", msg, {})
m.global.datadogLogsAgent.callfunc("logError", msg, {})
m.global.datadogLogsAgent.callfunc("logCritical", msg, {})
m.global.datadogLogsAgent.callfunc("logAlert", msg, {})
m.global.datadogLogsAgent.callfunc("logEmergency", msg, {})
(선택) 로그 메시지와 함께 Associative Array를 제공하면 내보내지는 로그에 속성을 추가할 수 있어요. AssocArray의 각 항목이 속성으로 추가돼요.
m.global.datadogLogsAgent.callfunc(
"logInfo",
"Video started",
{ video_id: 42, video_type: "advert"}
)
배치 수집 (Batch collection)
모든 로그는 먼저 로컬 기기에 배치 단위로 저장돼요. 각 배치는 인테이크(intake) 규격을 따릅니다. 네트워크를 사용할 수 있게 되면 바로 전송돼요. 채널이 열려 있는 동안 네트워크를 사용할 수 없거나 데이터 업로드가 실패하면, 배치는 성공적으로 보낼 수 있을 때까지 보관돼요.
SDK가 디스크 공간을 너무 많이 차지하지 않도록, 디스크의 데이터는 너무 오래되면 자동으로 삭제돼요.
참고: 데이터가 Datadog에 업로드되기 전에는 채널의 캐시 디렉터리에 평문(cleartext)으로 저장돼요. 즉 이 데이터는 다른 애플리케이션이 읽을 수 없어요. 다만 OS가 언제든지 데이터를 제거할 수 있어서 드물게 데이터 손실이 발생할 수 있어요.