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 프로세스에서만 초기화 |
연동 정보 준비¶
- 「RUM > 애플리케이션 목록 > 애플리케이션 생성 > Web」으로 이동합니다.
- 애플리케이션을 생성하고 콘솔에서 생성된
applicationId,env,version등의 설정을 확인합니다. -
데이터 전송 방식을 선택합니다:
-
공용 OpenWay:
site및clientToken을 획득하며, DataKit 배포가 필요 없습니다. - DataKit 직접 연결:
datakitOrigin을 준비합니다. DataKit에서 RUM 수집기를 활성화하고 공용 네트워크에서 접근 가능하며 IP 지리 정보 데이터베이스를 설치하도록 구성해야 합니다.
두 가지 전송 방식을 동시에 구성하지 마십시오
공용 OpenWay는 site 및 clientToken을 사용하고, DataKit 직접 연결은 datakitOrigin을 사용합니다. 현재 연동 방식에 필요한 필드만 유지하세요.
전송 방식¶
SDK 통합¶
연동 방식 |
설명 |
|---|---|
| NPM | SDK 코드를 프론트엔드 프로젝트에 번들링하여 버전을 고정합니다. SDK 초기화 전 요청 및 오류를 놓칠 수 있습니다. |
| CDN 비동기 로드 | CDN을 통해 SDK 스크립트를 비동기적으로 로드하여 페이지 로드 성능에 영향을 주지 않습니다. 초기화 전 요청 및 오류 수집을 놓칠 수 있습니다. |
| CDN 동기 로드 | CDN을 통해 SDK 스크립트를 동기적으로 로드하여 모든 오류 및 성능 메트릭을 완전히 수집할 수 있습니다. 단, 페이지 로드 성능에 영향을 줄 수 있습니다. |
NPM 연동¶
프론트엔드 프로젝트에 SDK를 설치하고 가져옵니다:
프로젝트에서 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을 대신 구성하십시오.
연동 확인¶
- SDK가 연동된 페이지를 열고 페이지 이동, 버튼 클릭 및 API 요청을 한 번 수행합니다.
- 브라우저 개발자 도구의 Network 탭에서
/v1/write/rum을 필터링하여 성공적인 전송 요청이 있는지 확인합니다. - Console에서
Application ID is not configured,datakitOrigin or site is not configured와 같은 초기화 오류가 없는지 확인합니다. - 「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, 정규식, 일치 함수 또는 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 |
사용자 동작 수집을 활성화할지 여부입니다. |
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: trueauto: 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을 다시 시작합니다. 다음 사용자 상호 작용을 기다릴 필요가 없습니다:
또한 런타임 sessionSampleRate를 동시에 재정의할 수 있습니다:
샘플링 비율은 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
})
주의 사항¶
- 데이터 압축 로직은 Web Worker에서 실행됩니다. CSP 보안 정책이 활성화된 경우
worker-src에서blob:을 허용해야 합니다. 자세한 내용은 CSP 보안 정책 설명을 참조하십시오. - SDK는
workerUrl구성 항목을 통해 자체 호스팅 Worker 주소를 지정할 수 있습니다. - 이 기능을 사용하려면 SDK 버전이 >= 3.2여야 합니다.
사용자 정의 데이터 및 이벤트¶
기본 연동 페이지에서는 모든 공용 API를 다시 펼쳐서 설명하지 않습니다. 비즈니스 목표에 따라 해당 페이지로 이동하면 CDN, NPM 및 전체 매개변수 예시를 확인할 수 있습니다:
- 사용자 작업 추적: 클릭 자동 수집, Action 이름 정의, 사용자 정의 Action 추가
- 사용자 정의 사용자 식별자: 로그인 후 사용자 설정, 로그아웃 또는 계정 전환 시 사용자 정리
- 전역 컨텍스트: 모든 후속 RUM 이벤트에 안정적인 비즈니스 차원을 추가합니다.
- 사용자 정의 Action 추가: 페이지 클릭으로 표현할 수 없는 비즈니스 작업을 기록합니다.
- 사용자 정의 Error 전송: 이미 캡처되었거나 비즈니스에서 직접 식별한 예외를 전송합니다.
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는 SDK3.3.7부터 제공되며 RUM 메인 패키지 버전>= 3.3.7이 필요하고 호환되는browser-rum-webgl플러그인을 추가로 설치 및 등록해야 합니다. 플러그인과 메인 패키지는 동일한 SDK 릴리스 버전을 사용하는 것이 좋습니다. 자세한 내용은 Canvas 녹화 사용 설명서를 참조하십시오. - 리플레이 시 정적 리소스(예: 글꼴, 이미지)에 정상적으로 액세스하려면 CORS 정책을 구성해야 할 수 있습니다.
- CSSStyleSheet 인터페이스를 통해 CSS 규칙에 액세스할 수 있는지 확인하여 CSS 스타일 및 마우스 호버 이벤트를 지원하십시오.
녹화 상태 확인¶
window.DATAFLUX_RUM.isRecording()을 호출하여 현재 페이지가 녹화 중인지 확인하고 세션 리플레이 탐색기에서 해당 Session이 리플레이 데이터를 생성했는지 확인합니다. 프로덕션 환경에서는 비즈니스 요구 사항에 따라 sessionReplaySampleRate를 조정하십시오.