콘텐츠로 이동

Web 애플리케이션 연동


이 페이지 구성을 완료하면 Browser RUM SDK가 페이지 View, 리소스 요청, 프런트엔드 오류, 사용자 작업을 자동으로 수집하여 Guance로 데이터를 전송합니다.

연동 경로 선택

먼저 애플리케이션 형태에 따라 진입 방식을 선택하여 View가 중복 구성되거나 서버 렌더링 단계에서 브라우저 API에 접근하는 것을 방지합니다.

애플리케이션 형태 권장 진입 방식 설명
Webpack, Vite, Rollup 등 빌드 도구 사용 NPM 연동 버전 관리와 필요에 따른 통합이 용이한 권장 방식
프런트엔드 빌드 프로세스 없음 CDN 비동기 로드 페이지 파싱을 차단하지 않지만 초기화 전 요청과 오류를 놓칠 수 있음
페이지 초기 단계의 오류와 요청을 반드시 수집해야 하는 경우 CDN 동기 로드 최대한 빨리 초기화하지만 페이지 로딩 시간을 차지함
기본 RUM만 필요하고 프런트엔드 번들 크기를 고려하는 경우 슬림 RUM SDK 일반적인 RUM 수집은 유지하되 Session Replay와 전송 압축은 포함하지 않음
React, Vue, Angular 단일 페이지 애플리케이션 프런트엔드 프레임워크 플러그인 연동 Router View와 프레임워크 오류를 자동으로 관리
Next.js, Nuxt SSR 프레임워크 연동 서버와 브라우저 환경을 구분하여 View 중복 방지
Electron Electron 애플리케이션 연동 renderer process에서만 초기화

연동 정보 준비

  1. 「실제 사용자 모니터링(RUM) > 애플리케이션 목록 > 애플리케이션 생성 > Web」으로 이동합니다.
  2. 애플리케이션을 생성하고 콘솔에서 생성된 applicationId, env, version 등 구성을 확인합니다.
  3. 데이터 전송 방식을 선택합니다:

  4. 공용 OpenWay: site와 clientToken을 획득하며 DataKit 배포가 필요 없습니다.

  5. DataKit 직접 연결: datakitOrigin을 준비합니다. DataKit에서 RUM 수집기를 활성화하고 공용망에서 접근 가능하며 IP 지리 정보 라이브러리가 설치된 상태로 구성합니다.
두 가지 전송 방식을 동시에 구성하지 마세요

공용 OpenWay는 site와 clientToken을 사용하고, DataKit 직접 연결은 datakitOrigin을 사용합니다. 현재 연동 방식에 필요한 필드만 유지하세요.

데이터 전송 방식

{
  applicationId: "<APPLICATION_ID>",
  datakitOrigin: "<DATAKIT_ORIGIN>"
}

{
  applicationId: "<APPLICATION_ID>",
  site: "<PUBLIC_OPENWAY_URL>",
  clientToken: "<CLIENT_TOKEN>"
}

SDK 통합

연동 방식
설명
NPM SDK 코드를 프런트엔드 프로젝트에 번들링하여 버전 고정이 용이합니다. SDK 초기화 전의 요청과 오류는 놓칠 수 있습니다.
CDN 비동기 로드 CDN을 통해 SDK 스크립트를 비동기로 불러와 페이지 로딩 성능에 영향을 주지 않습니다. 초기화 전의 요청과 오류 수집은 놓칠 수 있습니다.
CDN 동기 로드 CDN을 통해 SDK 스크립트를 동기로 불러와 모든 오류와 성능 지표를 빠짐없이 수집할 수 있습니다. 다만 페이지 로딩 성능에 영향을 줄 수 있습니다.

NPM 연동

프런트엔드 프로젝트에서 SDK를 설치하고 불러옵니다:

npm install @cloudcare/browser-rum @cloudcare/browser-core

프로젝트에서 SDK를 초기화합니다:

import { datafluxRum } from "@cloudcare/browser-rum"

datafluxRum.init({
  applicationId: "<APPLICATION_ID>",
  site: "<PUBLIC_OPENWAY_URL>",
  clientToken: "<CLIENT_TOKEN>",
  service: "web-app",
  env: "production",
  version: "1.0.0",
  sessionSampleRate: 100,
  trackUserInteractions: true
})

CDN 동기 로드

HTML 파일에 스크립트를 추가합니다:

<script
  src="https://static.guance.com/browser-sdk/v3/dataflux-rum.js"
  type="text/javascript"
></script>
<script>
  window.DATAFLUX_RUM &&
    window.DATAFLUX_RUM.init({
      applicationId: "<APPLICATION_ID>",
      site: "<PUBLIC_OPENWAY_URL>",
      clientToken: "<CLIENT_TOKEN>",
      service: "web-app",
      env: "production",
      version: "1.0.0",
      sessionSampleRate: 100,
      trackUserInteractions: true
    })
</script>

CDN 비동기 로드

HTML 파일에 스크립트를 추가합니다:

<script>
  ;(function (h, o, u, n, d) {
    h = h[d] = h[d] || {
      q: [],
      onReady: function (c) {
        h.q.push(c)
      },
    }
    d = o.createElement(u)
    d.async = 1
    d.src = n
    n = o.getElementsByTagName(u)[0]
    n.parentNode.insertBefore(d, n)
  })(
    window,
    document,
    "script",
    "https://static.guance.com/browser-sdk/v3/dataflux-rum.js",
    "DATAFLUX_RUM"
  )
  DATAFLUX_RUM.onReady(function () {
    DATAFLUX_RUM.init({
      applicationId: "<APPLICATION_ID>",
      site: "<PUBLIC_OPENWAY_URL>",
      clientToken: "<CLIENT_TOKEN>",
      service: "web-app",
      env: "production",
      version: "1.0.0",
      sessionSampleRate: 100,
      trackUserInteractions: true
    })
  })
</script>

위 예시는 공용 OpenWay를 사용합니다. DataKit 직접 연결을 사용할 때는 site와 clientToken을 제거하고 datakitOrigin을 구성하세요.

슬림 RUM SDK

RUM SDK 3.3.3부터 슬림 버전을 제공합니다. 슬림 버전은 전체 버전과 동일한 초기화 방식을 사용하며 View, Resource, Long Task, Error, Action, 사용자 및 글로벌 Context, 사용자 정의 이벤트, 분산 추적 등 일반적인 RUM 기능을 지원합니다. 페이지 녹화가 필요 없고 프런트엔드 번들 크기를 줄이려는 애플리케이션에 적합합니다.

NPM 연동

일반 RUM 패키지를 동일 버전의 슬림 패키지로 교체합니다:

npm install @cloudcare/browser-rum-slim @cloudcare/browser-core
import { datafluxRum } from "@cloudcare/browser-rum-slim"

datafluxRum.init({
  applicationId: "<APPLICATION_ID>",
  site: "<PUBLIC_OPENWAY_URL>",
  clientToken: "<CLIENT_TOKEN>",
  service: "web-app",
  env: "production",
  version: "1.0.0",
  sessionSampleRate: 100,
  trackUserInteractions: true
})

CDN 연동

동기 또는 비동기 로드 방식은 전체 버전과 동일하며, 스크립트 파일 이름만 슬림 버전에 해당하는 파일로 교체하면 됩니다. 다음은 동기 로드 예시입니다:

<script
  src="https://static.guance.com/browser-sdk/v3/dataflux-rum-slim.js"
  type="text/javascript"
></script>
<script>
  window.DATAFLUX_RUM &&
    window.DATAFLUX_RUM.init({
      applicationId: "<APPLICATION_ID>",
      site: "<PUBLIC_OPENWAY_URL>",
      clientToken: "<CLIENT_TOKEN>",
      service: "web-app",
      env: "production",
      version: "1.0.0",
      sessionSampleRate: 100,
      trackUserInteractions: true
    })
</script>

전체 버전과의 기능 차이

슬림 버전에는 다음 기능이 포함되지 않습니다:

  • Session Replay 및 startSessionReplayRecording(), stopSessionReplayRecording(), isRecording() 등 녹화 API.
  • Canvas 2D, WebGL/WebGL2 녹화 및 snapshotCanvas() 등 Canvas API.
  • compressIntakeRequests 전송 압축 및 해당 Worker.

슬림 버전은 sessionReplaySampleRate, sessionReplayOnErrorSampleRate, replayCanvasEnabled를 강제로 비활성화하고 compressIntakeRequests를 강제로 false로 설정합니다. 연동 시 이러한 구성을 전달하지 말고 workerUrl이나 replayCanvasWorkerUrl도 설정할 필요가 없습니다. 이후에 세션 리플레이, Canvas 녹화 또는 압축 전송이 필요하면 NPM 패키지 또는 CDN 파일을 전체 버전으로 다시 전환하면 되며, 다른 기본 초기화 파라미터는 계속 사용할 수 있습니다.

연동 확인

  1. SDK가 연동된 페이지를 열고 페이지 이동, 버튼 클릭, API 요청을 한 번씩 수행합니다.
  2. 브라우저 개발자 도구의 Network에서 /v1/write/rum을 필터링하여 성공한 전송 요청이 있는지 확인합니다.
  3. Console에서 Application ID is not configured, datakitOrigin or site is not configured 등 초기화 오류가 없는지 확인합니다.
  4. 「RUM > 애플리케이션 목록」으로 이동하여 해당 Web 애플리케이션을 열고 탐색기에서 service, env, version으로 필터링하여 View, Resource 또는 Action 데이터가 있는지 확인합니다.
View 데이터가 보이면 기본 연동이 성공한 것입니다

Error, Resource, Action은 페이지에서 해당 이벤트가 실제로 발생해야 나타납니다. 데이터가 없으면 먼저 현재 Session이 sessionSampleRate에 포함되는지 확인한 후 FAQ를 참조하세요.

자주 사용하는 선택 구성

기본 데이터 확인이 끝나면 필요에 따라 다른 기능을 활성화합니다:

목표 구성 또는 API 문서
프런트엔드·백엔드 분산 추적 연동 allowedTracingUrls, traceType 분산 추적 구성
익명 방문자 기준 API 요청 빈도 제한 visitorId, resetVisitorId() 방문자 식별자 Visitor ID
수집 비율 제어 sessionSampleRate, startSession() 샘플링 구성
세션 리플레이 활성화 startSessionReplayRecording() Web 세션 리플레이
SPA Router View 자동 관리 plugins 프런트엔드 프레임워크 플러그인 연동
WebGL/WebGL2 녹화 plugins, Canvas 자동 녹화 Canvas 녹화 사용 설명서
로그인 사용자 식별 setUser() 사용자 지정 식별자
비즈니스 필드 또는 이벤트 추가 Global Context, addAction(), addError() 사용자 정의 데이터 및 이벤트

분산 추적 구성(선택)

NPM + TypeScript 연동 시 traceType는 해당 브랜드의 browser-core 패키지에서 가져온 TraceType 열거형을 사용해야 합니다:

import { TraceType } from "@cloudcare/browser-core"
import { datafluxRum } from "@cloudcare/browser-rum"

datafluxRum.init({
  applicationId: "<APPLICATION_ID>",
  site: "<PUBLIC_OPENWAY_URL>",
  clientToken: "<CLIENT_TOKEN>",
  allowedTracingUrls: ["https://api.example.com"],
  traceType: TraceType.DDTRACE
})

TraceType.DDTRACE의 런타임 값은 여전히 "ddtrace"입니다. CDN 연동에는 모듈 임포트가 없으므로 명시적으로 구성할 때 해당 런타임 문자열을 사용합니다. 분산 추적을 활성화한 후에는 API 서버에서 해당 Trace Header도 허용해야 합니다. 자세한 내용은 APM과 RUM 연동을 참조하세요.

일반 Session이 샘플링에 포함되지 않았지만 Trace Header를 백엔드에 전달해야 하는 경우 allowTraceHeaderWithoutSession을 명시적으로 활성화할 수 있습니다:

datafluxRum.init({
  applicationId: "<APPLICATION_ID>",
  site: "<PUBLIC_OPENWAY_URL>",
  clientToken: "<CLIENT_TOKEN>",
  sessionSampleRate: 0,
  sessionOnErrorSampleRate: 0,
  allowedTracingUrls: ["https://api.example.com"],
  allowTraceHeaderWithoutSession: true
})

활성화하면 SDK는 여전히 allowedTracingUrls에 해당하는 XHR 및 Fetch 요청에만 Trace Header를 주입합니다. 이 구성은 RUM Session을 생성하거나 강제로 활성화하지 않으며, 샘플링에 포함되지 않은 Session의 View, Error, Resource, Action 데이터도 전송하지 않습니다. API 서비스에서도 선택한 traceType에 해당하는 요청 헤더를 허용해야 하며, 크로스 오리진 요청에는 CORS도 올바르게 구성해야 합니다.

파라미터 구성

초기화 파라미터

파라미터
유형
필수 여부
기본값
설명
applicationId String 예 Guance에서 생성한 애플리케이션 ID.
datakitOrigin String DataKit 직접 연결 시 DataKit 데이터 전송 주소. 형식은 프로토콜(:// 포함) + 도메인 또는 IP + 선택적 포트이며, 예: https://datakit.example.com.
clientToken String 공용 OpenWay 시 공용 OpenWay 데이터 전송 토큰. Guance 콘솔에서 획득합니다.
site String 공용 OpenWay 시 공용 OpenWay 데이터 전송 주소. Guance 콘솔에서 획득합니다.
env String 아니요 Web 애플리케이션의 현재 환경. 예: prod: 운영 환경, gray: 카나리 환경, pre: 사전 배포 환경, common: 일반 환경, local: 로컬 환경.
version String 아니요 Web 애플리케이션의 버전 번호.
service String 아니요 현재 애플리케이션의 서비스 이름. 기본값은 browser이며 사용자 정의 구성이 가능합니다.
sessionSampleRate Number 아니요 100 메트릭 데이터 수집 비율:
100은 전체 수집을, 0은 수집하지 않음을 의미합니다.
sessionOnErrorSampleRate Number 아니요 0 오류 세션 보상 샘플링 비율: 세션이 sessionSampleRate에 포함되지 않았지만 세션 중 오류가 발생한 경우 해당 비율로 수집합니다. 이러한 세션은 오류 발생 시 이벤트 기록을 시작하여 세션이 종료될 때까지 계속 기록합니다. SDK 버전 요구 사항: >= 3.2.19
sessionReplaySampleRate Number 아니요 100 Session Replay 데이터 수집 비율:
100은 전체 수집을, 0은 수집하지 않음을 의미합니다.
sessionReplayOnErrorSampleRate Number 아니요 0 Session Replay 오류 세션 리플레이 보상 샘플링 비율: 세션이 sessionReplaySampleRate에 포함되지 않았지만 세션 중 오류가 발생한 경우 해당 비율로 수집합니다. 이러한 리플레이는 오류 발생 전 최대 1분간의 이벤트를 기록하고 세션이 종료될 때까지 계속 기록합니다. SDK 버전 요구 사항: >= 3.2.19
trackSessionAcrossSubdomains Boolean 아니요 false 동일한 도메인 아래 서브도메인 간에 세션 쿠키를 공유합니다.
usePartitionedCrossSiteSessionCookie Boolean 아니요 false 분할된 보안 크로스 사이트 세션 쿠키 활성화 여부 자세히 보기
useSecureSessionCookie Boolean 아니요 false 보안 세션 쿠키를 사용합니다. 이 경우 보안되지 않은(비 HTTPS) 연결에서 전송되는 RUM 이벤트가 비활성화됩니다.
traceType TraceType 아니요 TraceType.DDTRACE(런타임 값 ddtrace) 분산 추적 도구 유형을 구성합니다. NPM 연동은 TraceType 열거형을, CDN 연동은 해당 런타임 문자열을 사용합니다. 현재 DDTRACE(ddtrace), ZIPKIN_MULTI_HEADER(zipkin), ZIPKIN_SINGLE_HEADER(zipkin_single_header), W3C_TRACEPARENT(w3c_traceparent), W3C_TRACEPARENT_64(w3c_traceparent_64bit), SKYWALKING_V3(skywalking_v3), JAEGER(jaeger)를 지원합니다.

❗️
1. OpenTelemetry는 zipkin_single_header, w3c_traceparent, zipkin, jaeger 4가지 유형을 지원합니다.
2. 이 구성이 적용되려면 allowedTracingUrls가 설정되어야 합니다.
3. 해당 유형을 구성할 때 API 서비스에 맞는 Access-Control-Allow-Headers를 설정해야 합니다. 자세한 내용은 APM과 RUM 연동을 참조하세요.
traceId128Bit Boolean 아니요 false traceID를 128비트 모드로 생성할지 여부. traceType과 대응되며 현재 zipkin, jaeger를 지원합니다.
allowedTracingUrls Array 아니요 [] Trace Header 주입을 허용하는 요청 URL 매칭 목록. 배열 항목은 전체 URL, 정규식, 매칭 함수 또는 match와 traceType을 포함하는 객체가 될 수 있습니다. 예: ["https://api.example.com/xxx", /https:\/\/.*\.my-api-domain\.com\/xxx/, (url) => url.includes("/api/")].
allowTraceHeaderWithoutSession Boolean 아니요 false 현재 RUM Session이 샘플링에 포함되지 않은 경우에도 allowedTracingUrls에 해당하는 XHR 및 Fetch 요청에 Trace Header를 주입할지 여부. 활성화해도 Session이 생성되지 않으며 샘플링에 포함되지 않은 Session의 RUM 데이터도 전송하지 않습니다.
allowedTracingOrigins Array 아니요 [] 더 이상 사용되지 않으며 이전 버전 구성과의 호환성을 위해서만 유지됩니다. 신규 연동은 allowedTracingUrls를 사용하세요. 둘 다 구성하면 allowedTracingUrls가 이 구성을 덮어씁니다.
trackUserInteractions Boolean 아니요 false 사용자 행동 수집 활성화 여부.
enablePrivacyForActionName Boolean 아니요 false 자동 Action 이름이 DOM 개인정보 보호 수준을 따를지 여부. 활성화하면 마스킹된 이름은 고정 플레이스홀더를 사용하고, 숨겨진 요소의 클릭은 자동 Action을 생성하지 않습니다. 명시적으로 구성된 Action 이름 속성은 계속 사용할 수 있습니다. SDK 버전 요구 사항: >= 3.3.14 자세한 내용은 자동 Action 이름 보호를 참조하세요.
trackViewsManually Boolean 아니요 false SDK의 자동 View를 비활성화하고 애플리케이션이 startView()를 호출하여 View를 수동으로 시작할지 여부. 프레임워크 Router 플러그인이 이 구성을 자동으로 관리하므로 비즈니스에서 중복 설정할 필요가 없습니다. 자세한 내용 참조
plugins Array 아니요 [] RUM 플러그인 등록. 반드시 init() 시 전달해야 합니다. 프레임워크 플러그인은 React, Vue, Angular, Next.js, Nuxt의 라우터 View와 프레임워크 오류를 수집할 수 있습니다. SDK 버전 요구 사항: >= 3.3.6 자세한 내용은 프런트엔드 프레임워크 플러그인 연동을 참조하세요. WebGL Replay는 SDK 3.3.7부터 제공되며 RUM 메인 패키지 버전 >= 3.3.7이 필요합니다. 플러그인과 메인 패키지는 동일한 SDK 릴리스 버전을 사용할 것을 권장합니다. 자세한 내용은 Canvas 녹화 사용 설명서를 참조하세요.
enableExperimentalFeatures Array 아니요 [] 실험 기능 활성화. ["track_websockets"]를 구성하면 네이티브 WebSocket 연결 수준의 Resource를 수집할 수 있습니다. SDK 버전 요구 사항: >= 3.3.6 자세한 내용 참조
actionNameAttribute String 아니요 버전 요구 사항: >3.1.2. 요소에 사용자 정의 속성을 추가하여 Action 이름을 지정합니다. 자세한 사용 방법은 관련 문서를 참조하세요.
beforeSend Function(event, context):Boolean 아니요 버전 요구 사항: >3.1.2. 데이터 차단 및 데이터 수정. 자세한 내용 참조
storeContextsToLocal Boolean 아니요 버전 요구 사항: >3.1.2. setUser, addGlobalContext API로 추가한 사용자 정의 데이터 등을 로컬 localStorage에 캐시할지 여부.
storeContextsKey String 아니요 버전 요구 사항: >3.1.18. localStorage에 저장할 key를 정의합니다. 기본값은 비어 있으며 자동 생성됩니다. 이 파라미터는 동일한 도메인에서 서로 다른 하위 경로가 store를 공유하는 문제를 구분하기 위한 것입니다.
compressIntakeRequests Boolean 아니요 RUM 데이터 요청 내용을 압축하여 대량 데이터 전송 시 대역폭 사용량과 데이터 전송 요청 수를 줄입니다. 압축은 Web Worker 스레드에서 수행됩니다. CSP 보안 정책은 CSP 보안을 참조하세요. SDK 버전 요구 사항: >= 3.2.0. DataKit 버전 요구 사항: >= 1.60. 배포 플랜 요구 사항: >= 1.96.178
workerUrl String 아니요 Session Replay와 compressIntakeRequests 데이터 압축은 모두 Web Worker 스레드에서 수행됩니다. 따라서 기본적으로 CSP 보안 접근이 활성화된 경우 worker-src blob:를 허용해야 합니다. 이 구성은 자체 호스팅 Worker 주소를 지정할 수 있게 합니다. CSP 보안 정책은 CSP 보안을 참조하세요. SDK 버전 요구 사항: >= 3.2.0.
remoteConfiguration Boolean 아니요 데이터 수집 원격 구성 기능 활성화 여부. 기본적으로 비활성화됩니다. 원격 구성 기능은 새 버전을 배포하지 않고도 데이터 수집 구성 항목을 동적으로 수정할 수 있습니다. 예를 들어 원격 구성에서 샘플링 비율, 사용자 행동 수집 활성화 여부 등을 수정할 수 있습니다. 원격 구성 기능을 사용하려면 Guance 콘솔에서 환경 변수 설정을 활성화해야 합니다. SDK 버전 요구 사항: >= 3.2.20. DataKit 버전 요구 사항: >= 1.60. Guance 콘솔에서 환경 변수 기능 활성화 방법
replayCanvasWorkerUrl string 아니요 Canvas snapshot 인코딩 전용 Worker 주소이며 workerUrl을 대체하지 않습니다. 이 구성은 자체 호스팅 Worker 주소를 지정할 수 있게 합니다. CSP 보안 정책은 CSP 보안을 참조하세요. SDK 버전 요구 사항: >= 3.3.0.
replayCanvasEnabled boolean 아니요 false Canvas 녹화 활성화 여부. 활성화하지 않으면 Canvas를 수집하지 않습니다. SDK 버전 요구 사항: >= 3.3.0.
replayCanvasMode 'manual' \| 'auto' 아니요 auto Canvas 녹화 모드. manual은 snapshotCanvas(canvas)를 수동으로 호출해야 하며 auto는 자동 녹화입니다.
replayCanvasSampling number \| 'all' 아니요 2 replayCanvasMode: 'auto'에서만 적용됩니다. 양수는 자동 snapshot 경로를 선택하며 2부터 시작할 것을 권장합니다. 값 자체는 Canvas 2D 수집 빈도를 제어하지 않습니다. 'all'은 Canvas 2D가 더 높은 재현도의 command capture를 시도하게 하며, 복잡한 시나리오에서는 여전히 snapshot으로 대체될 수 있습니다. WebGL 플러그인은 항상 예산이 있는 픽셀 스냅샷을 사용합니다.
replayCanvasAutoInterval number 아니요 250 Canvas별 자동 snapshot 목표 간격(밀리초). 여러 Canvas는 공정하게 순환되며 실제 속도는 cooldown, backoff, 페이지 표시 여부, 글로벌 런타임 예산 제한의 영향을 받습니다.
replayCanvasQuality 'low' \| 'medium' \| 'high' \| number 아니요 0.4 Canvas snapshot 인코딩 품질. 문자열 프리셋은 sampling과 자동 스케줄링 예산도 함께 조정합니다. 이미지 품질만 변경하려면 0에서 1 사이의 숫자를 전달하세요.
replayCanvasAutoCooldown number 아니요 250 동일 Canvas의 자동 snapshot 최소 쿨다운 시간(밀리초).
replayCanvasAutoUnchangedBackoff number 아니요 3000 경량 서명이 계속 변경되지 않을 때 다음 전체 인코딩 검증을 트리거하는 간격(밀리초). 그 사이에도 제한되고 적응형인 속도로 변경 여부를 감지합니다.
replayCanvasAutoFailureBackoff number 아니요 5000 자동 수집 실패 후 백오프 시간(밀리초).
replayCanvasAutoMaxPerRun number 아니요 2 자동 스케줄링 1회당 최대 처리 Canvas 수.
replayCanvasFlushImmediately boolean 아니요 manual: true
auto: false
Canvas 프레임이 성공적으로 replay에 들어간 후 우선적으로 flush할지 여부.
silentMultipleInit boolean 아니요 중복 초기화를 조용히 무시할지 여부.

low, medium, high 문자열 프리셋을 사용하지 않는 경우 Canvas 자동 스케줄링 기준은 sampling 2, Canvas별 목표 interval 250 ms, cooldown 250 ms, unchanged backoff 3000 ms, failure backoff 5000 ms, 라운드당 최대 2개 Canvas입니다. 문자열 프리셋은 이러한 예산과 인코딩 품질을 동시에 대체하며, 여러 Canvas는 공정한 순환과 글로벌 수집 예산에 의해 제한됩니다. 명시적인 개별 구성은 프리셋의 해당 값을 덮어씁니다. 전체 프리셋 매트릭스는 Canvas 녹화 사용 설명서에서 확인할 수 있습니다.

위의 고빈도 스케줄링 기준은 Canvas 2D에 적용됩니다. WebGL 플러그인은 interval/cooldown을 명시적으로 구성하지 않으면 더 보수적인 GPU readback 속도를 유지하며, 명시적인 개별 구성이 있을 때만 각각 덮어씁니다.

site 파라미터 처리

노드 이름 주소
중국 노드 1(항저우) https://rum-openway.guance.com
중국 노드 2(닝샤) https://aws-openway.guance.com
중국 노드 4(광저우) https://cn4-openway.guance.com
중국 노드 6(홍콩) https://cn6-openway.guance.one
국제 노드 1(오리건) https://us1-openway.guance.com
유럽 노드 1(프랑크푸르트) https://eu1-openway.guance.one
아시아 태평양 노드 1(싱가포르) https://ap1-openway.guance.one
아프리카 노드 1(남아프리카) https://za1-openway.guance.com
인도네시아 노드 1(자카르타) https://id1-openway.guance.com

런타임 Session 제어

RUM SDK 3.3.6에 startSession()이 추가되었습니다. 호출하면 현재 Session이 즉시 종료되고 현재 샘플링 구성에 따라 Session이 다시 시작되며, 다음 사용자 상호작용을 기다릴 필요가 없습니다:

datafluxRum.startSession()

런타임 sessionSampleRate도 함께 재정의할 수 있습니다:

datafluxRum.startSession({
  sessionSampleRate: 100,
})

샘플링 비율은 0에서 100 사이여야 합니다. 이 재정의 값은 현재 및 이후 자동으로 이어지는 Session에 적용됩니다. 전체 RUM 패키지와 슬림 RUM 패키지 모두 이 API를 지원합니다. 자세한 의미와 사용 사례는 런타임에서 Session 다시 시작을 참조하세요.

필요에 따라 고급 기능 활성화

오류 세션 이벤트만 수집

버전 요구 사항

SDK 버전 요구 사항: >= 3.2.19.

페이지에서 오류가 발생하면 SDK가 자동으로 다음을 수행합니다:

  • 지속 기록: 오류 발생 시점부터 세션 전체 수명 주기 데이터를 완전하게 기록합니다.
  • 정밀 보상: 독립적인 샘플링 채널을 통해 오류 시나리오가 누락되지 않도록 보장합니다.

구성 방식

window.DATAFLUX_RUM &&
  window.DATAFLUX_RUM.init({
    applicationId: "<APPLICATION_ID>",
    site: "<PUBLIC_OPENWAY_URL>",
    clientToken: "<CLIENT_TOKEN>",
    sessionSampleRate: 0,
    sessionOnErrorSampleRate: 100
  })

위 예시는 공용 OpenWay를 사용합니다. DataKit 직접 연결 시 기본 연동 예시에 따라 전송 주소 필드를 교체하세요.

데이터 압축

JS, CSS, 이미지 등 많은 정적 리소스를 수집하면서 전체 수집을 활성화하면 SDK 초기화 후 데이터가 많아져 요청이 쌓이고 애플리케이션 스레드 상태에 영향을 줄 수 있습니다.

compressIntakeRequests: true로 설정하면 SDK는 Web Worker에서 deflate로 전송 데이터를 압축하여 요청 크기와 요청 수를 줄입니다.

구성 예시

window.DATAFLUX_RUM &&
  window.DATAFLUX_RUM.init({
    applicationId: "<APPLICATION_ID>",
    site: "<PUBLIC_OPENWAY_URL>",
    clientToken: "<CLIENT_TOKEN>",
    compressIntakeRequests: true
  })

주의 사항

  1. 데이터 압축 로직은 Web Worker에서 실행됩니다. CSP 보안 정책이 활성화된 경우 worker-src에서 blob:을 허용해야 합니다. 자세한 내용은 CSP 보안 정책 설명을 참조하세요.
  2. SDK는 workerUrl 구성 항목을 통해 자체 호스팅 Worker 주소를 지정할 수 있습니다.
  3. 이 기능을 사용하려면 SDK 버전이 >= 3.2 이상이어야 합니다.

사용자 정의 데이터 및 이벤트

기본 연동 페이지에서는 모든 공용 API를 다시 다루지 않습니다. 비즈니스 목표에 따라 해당 페이지로 이동하면 CDN, NPM 및 전체 파라미터 예시를 확인할 수 있습니다:

Web 세션 리플레이

전제 조건

Session Replay가 포함된 전체 RUM 패키지를 사용하세요. 슬림 RUM 패키지에는 세션 리플레이 기능이 포함되지 않습니다.

녹화 활성화

SDK 초기화 후 startSessionReplayRecording() 메서드를 호출하여 세션 리플레이 녹화를 시작합니다. 사용자 로그인 후 세션 녹화 시작 등 특정 조건에서 활성화하도록 선택할 수 있습니다.

오류 관련 세션 리플레이 데이터만 수집

버전 요구 사항

SDK 버전 요구 사항: >= 3.2.19.

페이지에서 오류가 발생하면 SDK가 자동으로 다음 작업을 수행합니다:

  • 역추적 수집: 오류 발생 전 1분간의 전체 페이지 스냅샷을 기록합니다.
  • 지속 녹화: 오류 발생 시점부터 세션이 종료될 때까지 계속 기록합니다.
  • 지능형 보상: 독립적인 샘플링 채널로 오류 시나리오가 누락되지 않도록 보장합니다.

구성 예시

window.DATAFLUX_RUM &&
  window.DATAFLUX_RUM.init({
    applicationId: "<APPLICATION_ID>",
    site: "<PUBLIC_OPENWAY_URL>",
    clientToken: "<CLIENT_TOKEN>",
    sessionSampleRate: 100,
    sessionReplaySampleRate: 0,
    sessionReplayOnErrorSampleRate: 100
  })

window.DATAFLUX_RUM && window.DATAFLUX_RUM.startSessionReplayRecording()

주의 사항

  • 세션 리플레이는 iframe, 비디오, 오디오 재생 콘텐츠를 기록하지 않습니다. Canvas는 기본적으로 수집되지 않으므로 replayCanvasEnabled를 별도로 구성해야 합니다. WebGL/WebGL2는 SDK 3.3.7부터 제공되며 RUM 메인 패키지 버전 >= 3.3.7이 필요하고, 호환되는 browser-rum-webgl 플러그인을 추가로 설치하고 등록해야 합니다. 플러그인과 메인 패키지는 동일한 SDK 릴리스 버전을 사용할 것을 권장합니다. 자세한 내용은 Canvas 녹화 사용 설명서를 참조하세요.
  • 리플레이 시 폰트, 이미지 등 정적 리소스에 정상적으로 접근하려면 CORS 정책을 구성해야 할 수 있습니다.
  • CSSStyleSheet 인터페이스로 CSS 규칙에 접근할 수 있어야 CSS 스타일과 마우스 호버 이벤트를 지원할 수 있습니다.

녹화 상태 확인

window.DATAFLUX_RUM.isRecording()을 호출하여 현재 페이지가 녹화 중인지 확인하고, 세션 리플레이 탐색기에서 해당 Session에 리플레이 데이터가 생성되었는지 확인합니다. 운영 환경에서는 비즈니스 요구에 따라 sessionReplaySampleRate를 조정하세요.

문서 평가

이 페이지가 도움이 되었나요?