CloudWatch RUM 웹 클라이언트에서 수집한 정보 - Amazon CloudWatch

CloudWatch RUM 웹 클라이언트에서 수집한 정보

이 섹션에서는 PutRumEvents 스키마 즉, CloudWatch RUM을 사용하여 사용자 세션에서 수집할 수 있는 데이터의 구조를 정의합니다.

PutRumEvents 요청은 다음 필드가 있는 데이터 구조를 CloudWatch RUM으로 보냅니다.

  • 이 RUM 이벤트 배치의 ID

  • 다음을 포함하는 앱 모니터 세부 정보:

    • 앱 모니터 ID

    • 모니터링된 애플리케이션 버전

  • 다음을 포함하는 사용자 세부 정보. 이 정보는 앱 모니터에 쿠키가 활성화된 경우에만 수집됩니다.

    • 웹 클라이언트에서 생성된 사용자 ID

    • 세션 ID

  • 이 배치의 RUM 이벤트 배열

RUM 이벤트 스키마

각 RUM 이벤트의 구조에는 다음 필드가 포함됩니다.

RUM 이벤트 메타데이터

메타데이터에는 페이지 메타데이터, 사용자 에이전트 메타데이터, 지리적 위치 메타데이터 및 도메인 메타데이터가 포함됩니다.

페이지 메타데이터

페이지 메타데이터에는 다음이 포함됩니다.

  • 페이지 ID

  • 페이지 제목

  • 상위 페이지 ID입니다. – 이 정보는 앱 모니터에 쿠키를 사용하도록 설정한 경우에만 수집됩니다.

  • 상호 작용 깊이 - 이 정보는 앱 모니터에 쿠키가 사용하도록 설정된 경우에만 수집됩니다.

  • 페이지 태그 - 페이지 이벤트에 태그를 추가하여 페이지를 그룹화할 수 있습니다. 자세한 내용은 페이지 그룹 사용 단원을 참조하십시오.

사용자 에이전트 메타데이터

사용자 에이전트 메타데이터에는 다음이 포함됩니다.

  • 브라우저 언어

  • 브라우저 이름

  • 브라우저 버전

  • 운영 체제 이름

  • 운영 체제 버전

  • 디바이스 유형

  • 플랫폼 유형

지리적 메타데이터

지리적 메타데이터에는 다음이 포함됩니다.

  • 국가 코드

  • 세분화 코드

도메인 메타데이터

도메인 메타데이터에는 URL 도메인이 포함됩니다.

RUM 이벤트 세부 정보

이벤트 세부 정보는 이벤트 유형에 따라 다음 유형의 스키마 중 하나를 따릅니다.

세션 시작 이벤트

이 이벤트에는 필드가 없습니다. 이 정보는 앱 모니터에 쿠키가 활성화된 경우에만 수집됩니다.

페이지 보기 스키마

페이지 보기(Page view) 이벤트에는 다음과 같은 속성이 포함됩니다. 웹 클라이언트를 구성하여 페이지 보기 모음을 비활성화할 수 있습니다. 자세한 내용은 CloudWatch RUM 웹 클라이언트 설명서를 참조하세요.

명칭 유형 설명

페이지 ID

String

애플리케이션 내에서 이 페이지를 고유하게 나타내는 ID. 기본적으로 URL 경로입니다.

상위 페이지 ID

String

사용자가 현재 페이지로 이동할 때 사용했던 페이지 ID. 이 정보는 앱 모니터에 쿠키가 활성화된 경우에만 수집됩니다.

상호 작용 깊이

String

이 정보는 앱 모니터에 쿠키가 활성화된 경우에만 수집됩니다.

JavaScript 오류 스키마

에이전트에서 생성된 JavaScript 오류 이벤트에는 다음 속성이 포함됩니다. 웹 클라이언트는 오류 원격 측정을 수집하도록 선택한 경우에만 이러한 이벤트를 수집합니다.

명칭 유형 설명

오류 유형

String

오류 이름(존재하는 경우). 자세한 내용은 Error.prototype.name을 참조하세요.

일부 브라우저는 오류 유형을 지원하지 않을 수 있습니다.

오류 메시지

String

오류 메시지 자세한 내용은 Error.prototype.message를 참조하세요. 오류 필드가 없으면 오류 이벤트 메시지입니다. 자세한 내용은 ErrorEvent를 참조하세요.

여러 브라우저에서 오류 메시지가 일관되지 않을 수 있습니다.

스택 추적

String

오류의 스택 추적이 있는 경우 150자로 잘립니다. 자세한 내용은 Error.prototype.stack을 참조하세요.

일부 브라우저는 스택 추적을 지원하지 않을 수 있습니다.

DOM 이벤트 스키마

에이전트에서 생성된 문서 객체 모델(DOM) 이벤트에는 다음과 같은 속성이 포함되어 있습니다. 이러한 이벤트는 기본적으로 수집되지 않습니다. 상호 작용 원격 측정을 활성화하는 경우에만 수집됩니다. 자세한 내용은 CloudWatch RUM 웹 클라이언트 설명서를 참조하세요.

명칭 유형 설명

이벤트

String

클릭, 스크롤 또는 마우스오버와 같은 DOM 이벤트의 유형. 자세한 내용은 이벤트 참조를 참조하세요.

Element

String

DOM 요소 유형

ID 요소

String

이벤트를 생성한 요소에 ID가 있는 경우 이 속성은 해당 ID를 저장합니다. 자세한 내용은 Element.id를 참조하세요.

CSSLocator

String

DOM 요소를 식별하는 데 사용되는 CSS 로케이터입니다.

InteractionId

String

사용자와 UI 간의 상호 작용을 위한 고유 ID입니다.

탐색 이벤트 스키마

탐색 이벤트는 앱 모니터에 성능 원격 측정이 활성화된 경우에만 수집됩니다.

탐색 이벤트는 탐색 타이밍 레벨 1탐색 타이밍 레벨 2 API를 사용합니다. 레벨 2 API는 모든 브라우저에서 지원되지 않으므로 이러한 최신 필드는 선택 사항입니다.

참고

타임스탬프 지표는 DOMHighResTimestamp를 기반으로 합니다. 레벨 2 API의 경우 모든 타이밍은 기본적으로 startTime과 관련되어 있습니다. 하지만 레벨 1의 경우 상대값을 얻기 위해 타임스탬프 지표에서 navigationStart 지표를 뺍니다. 모든 타임스탬프 값은 밀리초 단위입니다.

탐색 이벤트에는 다음 속성이 포함됩니다.

명칭 유형 설명 참고

initiatorType

String

성능 이벤트를 시작한 리소스 유형을 나타냅니다.

값: "탐색"

레벨 1: "탐색"

레벨 2: entryData.initiatorType

navigationType

String

탐색 유형을 나타냅니다.

이 속성은 필수가 아닙니다.

값: 값은 다음 중 하나여야 합니다.

  • navigate는 링크를 선택하거나, 브라우저의 주소 표시줄에 URL을 입력하거나, 양식을 제출하거나, reload 또는 back_forward 이외의 스크립트 작업을 통해 초기화하여 시작하는 탐색입니다.

  • reload는 브라우저의 재로드 작업 또는 location.reload() 를 통한 탐색입니다.

  • back_forward는 브라우저의 기록 순회 작업을 통한 탐색입니다.

  • prerender는 프리렌더 힌트에 의해 시작된 탐색입니다. 자세한 내용은 프리렌더를 참조하세요.

startTime

숫자

이벤트가 트리거되는 시점을 나타냅니다.

값: 0

레벨 1: entryData.navigationStart - entryData.navigationStart

레벨 2: entryData.startTime

unloadEventStart

숫자

창의 이전 문서가 unload 이벤트가 발생 후 언로드되기 시작한 시간을 나타냅니다.

값: 이전 문서가 없거나 이전 문서 또는 필요한 리디렉션 중 하나가 동일한 원본이 아닌 경우 반환되는 값은 0입니다.

레벨 1:

entryData.unloadEventStart > 0 ? entryData.unloadEventStart - entryData.navigationStart : 0

레벨 2: entryData.unloadEventStart

promptForUnload

숫자

문서를 언로드하는 데 걸린 시간입니다. 즉, unloadEventStartunloadEventEnd 사이의 시간에서 UnloadEventEnd는 언로드 이벤트 핸들러가 완료된 순간을 밀리초로 나타냅니다.

값: 이전 문서가 없거나 이전 문서 또는 필요한 리디렉션 중 하나가 동일한 원본이 아닌 경우 반환되는 값은 0입니다.

레벨 1: entryData.unloadEventEnd - entryData.unloadEventStart

레벨 2: entryData.unloadEventEnd - entryData.unloadEventStart

redirectCount

숫자

현재 탐색 컨텍스트에서 마지막으로 리디렉션되지 않은 탐색 이후의 리디렉션 수를 나타내는 숫자입니다.

이 속성은 필수가 아닙니다.

값: 리디렉션이 없거나 대상 문서와 같은 원본이 아닌 리디렉션이 있는 경우 반환되는 값은 0입니다.

레벨 1: 사용할 수 없음

레벨 2: entryData.redirectCount

redirectStart

숫자

첫 번째 HTTP 리디렉션이 시작되는 시간입니다.

값: 리디렉션이 없거나 대상 문서와 같은 원본이 아닌 리디렉션이 있는 경우 반환되는 값은 0입니다.

레벨 1:

entryData.redirectStart > 0 ? entryData.redirectStart - entryData.navigationStart : 0

레벨 2: entryData.redirectStart

redirectTime

숫자

HTTP 리디렉션에 걸린 시간입니다. redirectStartredirectEnd의 차이점입니다.

레벨 1:: entryData.redirectEnd - entryData.redirectStart

레벨 2:: entryData.redirectEnd - entryData.redirectStart

workerStart

숫자

이것은 PerformanceResourceTiming 인터페이스 속성입니다. 작업자 스레드 작업의 시작을 표시합니다.

이 속성은 필수가 아닙니다.

값: 서비스 작업자 스레드가 이미 실행 중이거나 서비스 작업자 스레드를 시작하기 직전에 이 속성은 FetchEvent 디스패치 직전의 시간을 반환합니다. 서비스 작업자가 리소스를 가로채지 않으면 0을 반환합니다.

레벨 1: 사용할 수 없음

레벨 2: entryData.workerStart

workerTime

숫자

서비스 작업자가 리소스를 가로채면 작업자 스레드 작업에 필요한 시간이 반환됩니다.

이 속성은 필수가 아닙니다.

레벨 1: 사용할 수 없음

레벨 2:

entryData.workerStart > 0 ? entryData.fetchStart - entryData.workerStart : 0

fetchStart

숫자

브라우저가 HTTP 요청을 사용하여 문서를 가져올 준비가 된 시간입니다. 이는 애플리케이션 캐시를 확인하기 전입니다.

레벨 1:

: entryData.fetchStart > 0 ? entryData.fetchStart - entryData.navigationStart : 0

레벨 2: entryData.fetchStart

domainLookupStart

숫자

도메인 조회가 시작되는 시간입니다.

값: 영구 연결이 사용되거나 정보가 캐시 또는 로컬 리소스에 저장되어 있는 경우 값은 fetchStart와 같습니다.

레벨 1:

entryData.domainLookupStart > 0 ? entryData.domainLookupStart - entryData.navigationStart : 0

레벨 2: entryData.domainLookupStart

dns

숫자

도메인 조회에 필요한 시간입니다.

값: 리소스 및 DNS 레코드가 캐시된 경우 예상 값은 0입니다.

레벨 1: entryData.domainLookupEnd - entryData.domainLookupStart

레벨 2: entryData.domainLookupEnd - entryData.domainLookupStart

nextHopProtocol

String

리소스를 가져오는 데 사용되는 네트워크 프로토콜을 나타내는 문자열입니다.

이 속성은 필수가 아닙니다.

레벨 1: 사용할 수 없음

레벨 2: entryData.nextHopProtocol

connectStart

숫자

사용자 에이전트가 문서 검색을 위해 서버에 대한 연결 설정을 시작하기 직전의 시간입니다.

값: RFC2616 영구 연결이 사용되거나 현재 문서가 관련 애플리케이션 캐시 또는 로컬 리소스에서 검색되는 경우 이 속성은 domainLookupEnd 값을 반환합니다.

레벨 1:

entryData.connectStart > 0 ? entryData.connectStart - entryData.navigationStart : 0

레벨 2: entryData.connectStart

connect

숫자

전송 연결을 설정하거나 SSL 인증을 수행하는 데 필요한 시간을 측정합니다. 또한 브라우저에서 실행한 동시 요청이 너무 많을 때 걸리는 차단된 시간도 포함됩니다.

레벨 1: entryData.connectEnd - entryData.connectStart

레벨 2: entryData.connectEnd - entryData.connectStart

secureConnectionStart

숫자

현재 페이지의 URL 스키마가 "https"인 경우 이 속성은 사용자 에이전트가 현재 연결을 보호하기 위해 핸드셰이크 프로세스를 시작하기 직전의 시간을 반환합니다. HTTPS를 사용하지 않으면 0을 반환합니다. URL 스키마에 대한 자세한 내용은 URL 표시를 참조하세요.

공식: entryData.secureConnectionStart

tlsTime

숫자

SSL 핸드셰이크를 완료하는 데 걸린 시간입니다.

레벨 1:

entryData.secureConnectionStart > 0 ? entryData.connectEnd - entryData.secureConnectionStart : 0

레벨 2:

entryData.secureConnectionStart > 0 ? entryData.connectEnd - entryData.secureConnectionStart : 0

requestStart

숫자

사용자 에이전트가 서버나 관련 애플리케이션 캐시 또는 로컬 리소스에서 리소스 요청을 시작하기 직전의 시간입니다.

레벨 1:

: entryData.requestStart > 0 ? entryData.requestStart - entryData.navigationStart : 0

레벨 2: entryData.requestStart

timeToFirstByte

숫자

요청 후 첫 번째 바이트 정보를 수신하는 데 걸린 시간입니다. 이 시간은 startTime을 기준으로 합니다.

레벨 1: entryData.responseStart - entryData.requestStart

레벨 2: entryData.responseStart - entryData.requestStart

responseStart

숫자

사용자 에이전트의 HTTP 파서가 관련 애플리케이션 캐시 또는 로컬 리소스 또는 서버에서 응답의 첫 번째 바이트를 수신한 직후의 시간입니다.

레벨 1:

entryData.responseStart > 0 ? entryData.responseStart - entryData.navigationStart : 0

레벨 2: entryData.responseStart

responseTime

String

관련 애플리케이션 캐시, 로컬 리소스 또는 서버에서 바이트 형식으로 전체 응답을 수신하는 데 걸린 시간입니다.

레벨 1:

entryData.responseStart > 0 ? entryData.responseEnd - entryData.responseStart : 0

레벨 2:

entryData.responseStart > 0 ? entryData.responseEnd - entryData.responseStart : 0

domInteractive

숫자

파서가 기본 문서에서 작업을 완료하고 HTML DOM이 생성되는 시간입니다. 현 시점에서 Document.readyState가 "대화식"으로 바뀌며 해당 readystatechange 이벤트가 발생합니다.

레벨 1:

entryData.domInteractive > 0 ? entryData.domInteractive - entryData.navigationStart : 0

레벨 2: entryData.domInteractive

domContentLoadedEventStart

숫자

사용자 에이전트가 현재 문서에서 DOMContentLoaded 이벤트를 실행하기 직전의 시간과 동일한 시간 값을 나타냅니다. DomContentLoad 이벤트는 초기 HTML 문서가 완전히 로드되고 구문 분석되면 발생합니다. 이때 기본 HTML 문서의 구문 분석이 완료되고, 브라우저가 렌더 트리를 구성하기 시작하며, 하위 리소스는 여전히 로드되어야 합니다. 이는 스타일 시트, 이미지 및 하위 프레임이 로드될 때까지 기다리지 않습니다.

레벨 1:

entryData.domContentLoadedEventStart > 0 ? entryData.domContentLoadedEventStart - entryData.navigationStart : 0

레벨 2: entryData.domContentLoadedEventStart

domContentLoaded

숫자

렌더 트리 구성의 시작 시간과 종료 시간은 domContentLoadedEventStartdomContentLoadedEventEnd로 표시됩니다. CloudWatch RUM이 실행을 추적할 수 있습니다. 이 속성은 domContentLoadedStartdomContentLoadedEnd의 차이점입니다.

이 기간 동안 DOM과 CSSOM이 준비됩니다. 이 속성은 비동기 및 동적으로 생성된 스크립트를 제외하고 스크립트 실행을 기다립니다. 스크립트가 스타일 시트에 의존하는 경우 domContentLoaded는 스타일 시트에서도 기다립니다. 이미지를 기다리지 않습니다.

참고

domContentLoadedStartdomContentLoadedEnd의 실제 값은 Google Chrome의 네트워크 패널의 domContentLoaded에 근접합니다. 페이지 로딩 프로세스의 시작부터 HTML DOM + CSSOM 렌더링 트리 생성 시간을 나타냅니다. 탐색 지표의 경우 domContentLoaded 값은 시작 값과 끝 값의 차이를 나타냅니다. 이 값은 하위 리소스와 렌더링 트리 구성만 다운로드하는 데 필요한 시간입니다.

레벨 2: entryData.domContentLoadedEventEnd - entryData.domContentLoadedEventStart

레벨 2: entryData.domContentLoadedEventEnd - entryData.domContentLoadedEventStart

domComplete

숫자

브라우저가 현재 문서 준비를 완료하도록 설정하기 바로 전의 시간입니다. 이때 이미지와 같은 하위 리소스의 로드가 완료됩니다. 여기에는 CSS 및 동기식 JavaScript와 같은 차단 콘텐츠를 다운로드하는 데 걸리는 시간이 포함됩니다. 이 시간은 Google Chrome 네트워크 패널의 loadTime에 근접합니다.

레벨 1:

entryData.domComplete > 0 ? entryData.domComplete - entryData.navigationStart : 0

레벨 2: entryData.domComplete

domProcessingTime

숫자

응답과 로드 이벤트 시작 간 총 시간입니다.

레벨 1: entryData.loadEventStart - entryData.responseEnd

레벨 2: entryData.loadEventStart - entryData.responseEnd

loadEventStart

숫자

현재 문서의 load 이벤트 직전 시간입니다.

레벨 1:

entryData.loadEventStart > 0 ? entryData.loadEventStart - entryData.navigationStart : 0

레벨 2: entryData.loadEventStart

loadEventTime

숫자

loadEventStartloadEventEnd의 차이점. 이 로드 이벤트를 기다리는 추가 함수 또는 로직은 이 시간 동안 실행됩니다.

레벨 1: entryData.loadEventEnd - entryData.loadEventStart

레벨 2: entryData.loadEventEnd - entryData.loadEventStart

duration

String

기간은 총 페이지 로드 시간입니다. 기본 페이지와 모든 동기식 하위 리소스를 다운로드하고 페이지를 렌더링하는 타이밍을 기록합니다. 스크립트와 같은 비동기 리소스는 나중에 계속 다운로드됩니다. 이는 loadEventEndstartTime 속성 간 차이점입니다.

레벨 1: entryData.loadEventEnd - entryData.navigationStart

레벨 2: entryData.duration

headerSize

숫자

transferSizeencodedBodySize 간 차이를 반환합니다.

이 속성은 필수가 아닙니다.

레벨 1: 사용할 수 없음

레벨 2: entryData.transferSize - entryData.encodedBodySize

레벨 2: entryData.transferSize - entryData.encodedBodySize

compressionRatio

숫자

encodedBodySizedecodedBodySize의 비율. encodedBodySize 값은 HTTP 헤더를 제외한 리소스의 압축된 크기입니다. decodedBodySize 값은 HTTP 헤더를 제외한 리소스의 압축 해제된 크기입니다.

이 속성은 필수가 아닙니다.

레벨 1: 해당 사항 없음.

레벨 2:

entryData.encodedBodySize > 0 ? entryData.decodedBodySize / entryData.encodedBodySize : 0

navigationTimingLevel

숫자

탐색 타이밍 API 버전.

값: 1 또는 2

리소스 이벤트 스키마

탐색 이벤트는 앱 모니터에 성능 원격 측정이 활성화된 경우에만 수집됩니다.

타임스탬프 지표는 The DOMHighResTimeStamp typedef를 기반으로 합니다. 레벨 2 API의 경우 모든 타이밍은 기본적으로 startTime과 관련됩니다. 하지만 레벨 1 API의 경우 상대값을 얻기 위해 타임스탬프 지표에서 navigationStart 지표를 뺍니다. 모든 타임스탬프 값은 밀리초 단위입니다.

에이전트에서 생성된 리소스 이벤트에는 다음 속성이 포함됩니다.

명칭 유형 설명 참고

targetUrl

String

리소스 URL을 반환합니다.

공식: entryData.name

initiatorType

String

성능 리소스 이벤트를 시작한 리소스 유형을 나타냅니다.

값: "리소스"

공식: entryData.initiatorType

duration

String

responseEndstartTime 속성 간 차이를 반환합니다.

이 속성은 필수가 아닙니다.

공식: entryData.duration

transferSize

숫자

응답 헤더 필드와 응답 페이로드 본문을 포함하여 가져온 리소스 크기(옥텟 단위)를 반환합니다.

이 속성은 필수가 아닙니다.

공식: entryData.transferSize

fileType

String

대상 URL 패턴에서 파생된 확장입니다.

가장 큰 콘텐츠 페인트 이벤트 스키마

가장 큰 콘텐츠 페인트 이벤트에는 다음 속성이 포함됩니다.

이러한 이벤트는 활성화된 성능 원격 측정이 앱 모니터에 있는 경우에만 수집됩니다.

명칭 설명

자세한 내용은 웹 바이탈을 참조하세요.

첫 번째 입력 지연 이벤트

첫 번째 입력 지연 이벤트는 다음 속성을 포함합니다.

이러한 이벤트는 활성화된 성능 원격 측정이 앱 모니터에 있는 경우에만 수집됩니다.

명칭 설명

자세한 내용은 웹 바이탈을 참조하세요.

누적 레이아웃 시프트 이벤트

누적 레이아웃 시프트 이벤트에는 다음 속성이 포함됩니다.

이러한 이벤트는 활성화된 성능 원격 측정이 앱 모니터에 있는 경우에만 수집됩니다.

명칭 설명

자세한 내용은 웹 바이탈을 참조하세요.

HTTP 이벤트

HTTP 이벤트에는 다음 속성이 포함될 수 있습니다. Response 필드 또는 Error 필드 중 하나를 포함하되 두 필드 모두를 포함하지는 않습니다.

이러한 이벤트는 활성화된 HTTP 원격 측정이 앱 모니터에 있는 경우에만 수집됩니다.

명칭 설명

요청

요청 필드에는 다음이 포함됩니다.

  • Method 필드에는 GET, POST 등의 값을 가질 수 있습니다.

  • URL

응답

응답 필드에는 다음 항목이 포함됩니다.

  • 2xx, 4xx 또는 5xx 등의 상태

  • 상태 텍스트

오류

응답 필드에는 다음 항목이 포함됩니다.

  • 유형

  • 메시지

  • 파일 이름

  • 행 번호

  • 열 번호

  • 스택 추적

X-Ray 추적 이벤트 스키마

이러한 이벤트는 앱 모니터에 X-Ray 추적이 활성화된 경우에만 수집됩니다.

X-Ray 추적 이벤트 스키마에 대한 자세한 내용은 AWS X-Ray 세그먼트 설명서를 참조하세요.