콘텐츠로 이동

Web 애플리케이션 연동


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

연동 경로 선택

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

애플리케이션 형태 권장 진입점 설명
Webpack, Vite, Rollup 등 빌드 도구 사용 NPM 연동 권장 방식, 버전 관리 및 필요에 따른 통합이 용이함
프론트엔드 빌드 프로세스 없음 CDN 비동기 로드 페이지 구문 분석을 차단하지 않지만, 초기화 전 요청 및 오류를 놓칠 수 있음
페이지 초기 단계의 오류 및 요청을 반드시 수집해야 함 CDN 동기 로드 최대한 빨리 초기화하지만 페이지 로드 시간을 소모함
React, Vue, Angular 싱글 페이지 애플리케이션 프론트엔드 프레임워크 플러그인 연동 Router View 및 프레임워크 오류를 자동 관리
Next.js, Nuxt SSR 프레임워크 연동 서버 측과 브라우저 환경을 구분하여 View 중복 방지
Electron Electron 애플리케이션 연동 renderer 프로세스에서만 초기화

연동 정보 준비

  1. 「RUM > 애플리케이션 목록 > 애플리케이션 생성 > Web」으로 이동합니다.
  2. 애플리케이션을 생성하고 콘솔에서 생성된 applicationId, env, version 등의 설정을 확인합니다.
  3. 데이터 전송 방식을 선택합니다:

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

  5. DataKit 직접 연결: datakitOrigin을 준비합니다. DataKit에서 RUM 수집기를 활성화하고 공용 네트워크에서 접근 가능하며 IP 지리 정보 데이터베이스를 설치하도록 구성해야 합니다.
두 가지 전송 방식을 동시에 구성하지 마십시오

공용 OpenWay는 siteclientToken을 사용하고, 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 직접 연결을 사용하는 경우 siteclientToken을 제거하고 datakitOrigin을 대신 구성하십시오.

연동 확인

  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 분산 추적 설정
수집 비율 제어 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, 정규식, 일치 함수 또는 matchtraceType을 포함하는 객체일 수 있습니다. 예: ["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 사용자 동작 수집을 활성화할지 여부입니다.
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이 필요하고 호환되는 browser-rum-webgl 플러그인을 추가로 설치 및 등록해야 합니다. 플러그인과 메인 패키지는 동일한 SDK 릴리스 버전을 사용하는 것이 좋습니다. 자세한 내용은 Canvas 녹화 사용 설명서를 참조하십시오.
enableExperimentalFeatures Array 아니요 [] 실험적 기능을 활성화합니다. ["track_websockets"]를 구성하면 기본 WebSocket 연결 수준 Resource를 수집할 수 있습니다. SDK 버전 >= 3.3.6 필요. 자세히 보기
actionNameAttribute String 아니요 버전 요구 사항: >3.1.2. 요소에 사용자 정의 속성을 추가하여 작업 이름을 지정합니다. 구체적인 사용 방법은 자세히 보기를 참조하십시오.
beforeSend Function(event, context):Boolean 아니요 버전 요구 사항: >3.1.2. 데이터 차단 및 데이터 수정, 자세히 보기
storeContextsToLocal Boolean 아니요 버전 요구 사항: >3.1.2. 사용자 정의 데이터를 로컬 localStorage에 캐시할지 여부입니다. 예: setUser, addGlobalContext API로 추가된 사용자 정의 데이터.
storeContextsKey String 아니요 버전 요구 사항: >3.1.18. localStorage에 저장할 키를 정의합니다. 기본값은 비어 있으며 자동으로 생성됩니다. 이 매개변수는 주로 동일한 도메인 내에서 서로 다른 하위 경로가 store를 공유하는 문제를 구분하기 위한 것입니다.
compressIntakeRequests Boolean 아니요 RUM 데이터 요청 내용을 압축하여 대량 데이터 전송 시 대역폭 사용량을 줄이고 전송되는 데이터 요청 수를 줄입니다. 압축은 WebWorker 스레드에서 수행됩니다. CSP 보안 정책에 대한 자세한 내용은 CSP 보안을 참조하십시오. SDK 버전 >= 3.2.0 필요. datakit 버전 >= 1.60 필요. 배포판 버전 >= 1.96.178 필요
workerUrl String 아니요 sessionReplay 및 compressIntakeRequests 데이터 압축은 모두 webwork 스레드에서 수행됩니다. 따라서 기본적으로 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 단일 자동 스케줄링에서 처리할 최대 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는 공정한 순환 및 전역 수집 예산의 제한도 받습니다. 명시적인 개별 구성은 사전 설정의 해당 값을 재정의합니다. 전체 preset 매트릭스는 Canvas 녹화 사용 설명서를 참조하십시오.

위의 고빈도 스케줄링 기준은 Canvas 2D용입니다. WebGL 플러그인이 명시적으로 interval/cooldown을 구성하지 않은 경우 더 보수적인 GPU 읽기백 속도를 계속 사용합니다. 명시적인 개별 구성이 있어야 각각 재정의됩니다.

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를 조정하십시오.

문서 평가

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