Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

BigQuery로 Performance Monitoring 데이터 내보내기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

추가 분석을 위해 Apple 및 Android 앱의 Performance Monitoring 데이터를 BigQuery 로 내보낼 수 있습니다. BigQuery를 사용하면 BigQuery SQL을 사용하여 데이터를 분석하고 다른 클라우드 제공업체로 내보내고 사용자 지정 ML 모델에 데이터를 사용할 수도 있습니다.

BigQuery 내보내기 사용

  1. Firebase 콘솔의 통합 페이지로 이동한 다음 BigQuery 카드에서 링크 를 클릭합니다.

  2. 화면의 안내에 따라 BigQuery를 사용 설정하세요.

    Performance Monitoring에 BigQuery 내보내기를 사용 설정하면 다음이 발생합니다.

    • Firebase 는 기존 데이터의 사본을 BigQuery로 내보냅니다 . 내보내기를 위한 데이터의 초기 전파는 완료하는 데 최대 48시간이 걸릴 수 있습니다.

    • 데이터 세트가 생성된 후에는 위치를 변경할 수 없지만 데이터 세트를 다른 위치로 복사하거나 다른 위치에서 데이터 세트를 수동으로 이동(재생성)할 수 있습니다. 자세한 내용은 데이터 세트 위치 변경 을 참조하십시오.

    • Firebase는 Firebase 프로젝트에서 BigQuery로 데이터의 정기적인 동기화를 설정합니다. 이러한 일일 내보내기 작업은 일반적으로 예정된 후 24시간 내에 완료됩니다.

    • 기본적으로 프로젝트의 모든 앱은 BigQuery에 연결됩니다. 나중에 프로젝트에 추가하는 모든 앱은 BigQuery에 자동으로 연결됩니다. 데이터를 보내는 앱을 관리할 수 있습니다.

BigQuery 내보내기를 비활성화하려면 Firebase 콘솔에서 프로젝트 연결을 해제하세요 .

BigQuery로 어떤 데이터를 내보내나요?

프로젝트의 각 앱에 대해 내보내기는 캡처된 모든 성능 이벤트를 포함하는 테이블을 생성합니다. 테이블의 각 행은 다음 중 하나일 수 있는 단일 성능 이벤트입니다.

  • 기간 추적 — 기본적으로 앱 시작, 포그라운드 앱 및 백그라운드 앱을 포함하는 "기간" 메트릭과 개발자가 계측한 사용자 지정 코드 추적을 수집하는 추적

    • event_typeDURATION_TRACE 입니다.
    • event_name 은 추적 이름과 동일합니다.
  • 추적 메트릭 — 개발자가 계측한 사용자 지정 코드 추적과 연결된 사용자 지정 메트릭

    • event_typeTRACE_METRIC 입니다.
    • event_name 은 측정항목의 이름입니다.
    • parent_trace_name 은 이 메트릭을 포함하는 추적 이름입니다.
  • 화면 추적 — 화면의 수명에 걸친 추적(화면 렌더링 추적)

    • event_typeSCREEN_TRACE 입니다.
    • event_name 은 접두사 _st_ 에 실제 화면 이름을 더한 것입니다.
  • 네트워크 요청 — 네트워크 요청의 수명에 걸친 추적(HTTP 네트워크 요청 추적)

    • event_typeNETWORK_REQUEST 입니다.
    • event_name 은 네트워크 요청 URL의 분류된 패턴입니다.

각 성능 이벤트에는 이벤트 속성(예: 클라이언트 장치의 국가 및 이동통신사)과 이벤트별 정보가 포함됩니다.

  • 기간 추적, 추적 메트릭 및 화면 추적에는 trace_info 가 포함됩니다.
  • 추적 메트릭에는 trace_info.metric_info 가 포함됩니다.
  • 화면 추적에는 trace_info.screen_info 가 포함됩니다.
  • 네트워크 추적에는 network_info 가 포함됩니다.

자세한 데이터 스키마

분야 명 유형 설명
event_timestamp 타임스탬프 이벤트가 클라이언트 장치에서 시작된 Epoch 이후의 타임스탬프(추적 시작, 네트워크 시작 등)
앱_디스플레이_버전 애플리케이션의 표시 버전(예: "4.1.7")
  • Android의 경우 — VersionName
  • iOS용 — CFBundleShortVersionString
app_build_version 애플리케이션의 빌드 버전(예: "1523456")
  • Android용 — VersionCode
  • iOS용 — CFBundleVersion
OS_버전 클라이언트 장치의 OS 버전
  • Android의 경우 — Android API 레벨(예: "26")
  • iOS의 경우 — iOS 버전(예: "11.4")
장치 이름 클라이언트 장치의 이름(예: "Google Pixel")
국가 이벤트가 발생한 국가의 두 자리 국가 코드(예: "US" 또는 알 수 없는 국가의 경우 "ZZ")
담체 클라이언트 장치의 캐리어
라디오 유형 이벤트 발생 시 활성 무선 유형(예: "WIFI")
custom_attributes 어레이<레코드> 이 이벤트에 연결된 모든 맞춤 속성
custom_attributes.key 사용자 정의 속성의 키
custom_attributes.value 사용자 정의 속성 값
이벤트 유형 이벤트 유형; 가능한 값:
  • DURATION_TRACE — 기본적으로 앱 시작, 포그라운드 앱 및 백그라운드 앱을 포함하는 "지속 시간" 메트릭과 개발자가 계측한 모든 사용자 정의 코드 추적을 수집하는 추적
  • SCREEN_TRACE — 화면의 수명에 걸친 추적(화면 렌더링 추적)
  • TRACE_METRIC — 개발자 계측 사용자 지정 코드 추적과 연결된 사용자 지정 메트릭
  • NETWORK_REQUEST — 네트워크 요청의 수명에 걸친 추적(HTTP 네트워크 요청 추적)
이벤트 이름 이벤트 이름
  • DURATION_TRACE 의 경우 — 추적 이름
  • TRACE_METRIC 경우 — 맞춤 측정항목 이름
  • SCREEN_TRACE 의 경우 — _st_ 뒤에 추적 이름이 옵니다.
  • NETWORK_REQUEST 의 경우 — 네트워크 요청 URL 패턴
부모_추적_이름 추적 메트릭을 전달하는 상위 추적의 이름
TRACE_METRIC 에만 존재
추적 정보 기록 DURATION_TRACE , SCREEN_TRACETRACE_METRIC 에만 존재
trace_info.duration_us int64
  • DURATION_TRACESCREEN_TRACE 의 경우 — 추적 시작부터 끝까지의 시간("기간")
  • TRACE_METRIC 의 경우 — 부모 추적의 시작부터 끝까지의 시간("기간")
단위: 마이크로초
trace_info.screen_info 기록 SCREEN_TRACE 에만 존재
trace_info.screen_info.slow_frame_ratio 플로트64 0과 1 사이의 이 화면 추적에 대한 느린 프레임 비율(예: 0.05 값은 이 화면 인스턴스에 대한 프레임의 5%가 렌더링하는 데 16ms 이상 소요되었음을 의미함)
trace_info.screen_info.frozen_frame_ratio 플로트64 0과 1 사이의 이 화면 추적에 대한 고정 프레임 비율(예: 0.05 값은 이 화면 인스턴스에 대한 프레임의 5%가 렌더링하는 데 700ms 이상 소요되었음을 의미합니다.)
trace_info.metric_info 기록 TRACE_METRIC 에만 존재
trace_info.metric_info.metric_value int64 추적 측정항목의 값
네트워크 정보 기록 NETWORK_REQUEST 에 대해서만 존재
network_info.response_code int64 네트워크 응답에 대한 HTTP 응답 코드(예: 200, 404)
network_info.response_mime_type 네트워크 응답의 MIME 유형(예: "text/html")
network_info.request_http_method 네트워크 요청의 HTTP 메서드(예: "GET" 또는 "POST")
network_info.request_payload_bytes int64 네트워크 요청 페이로드의 크기
단위: 바이트
network_info.response_payload_bytes int64 네트워크 응답 페이로드의 크기
단위: 바이트
network_info.request_completed_time_us int64 네트워크 요청 전송이 완료된 경우 event_timestamp 이후 마이크로초
단위: 마이크로초
network_info.response_initiated_time_us int64 네트워크 응답이 시작될 때 event_timestamp 이후 마이크로초
단위: 마이크로초
network_info.response_completed_time_us int64 네트워크 응답 완료 시 event_timestamp 이후 마이크로초
단위: 마이크로초

내보낸 데이터로 무엇을 할 수 있습니까?

다음 섹션에서는 내보낸 Performance Monitoring 데이터에 대해 BigQuery에서 실행할 수 있는 쿼리의 예를 제공합니다.

국가별 평균 앱 시작 지연 시간 분석 보기

SELECT AVG(trace_info.duration_us), country
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "DURATION_TRACE"
AND event_name = "_app_start"
GROUP BY 2;

다양한 조건에 대한 정지 프레임 비율 확인

예를 들어 다른 무선 유형(WiFi, 4G 등)에서 사용자가 앱의 각 화면에서 보내는 시간과 함께 정지된 프레임의 비율을 확인할 수 있습니다.

SELECT
  AVG(trace_info.duration_us / 1000000) AS seconds_on_screen,
  AVG(trace_info.screen_info.frozen_frame_ratio) AS frozen_frame_ratio,
  event_name,
  radio_type
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "SCREEN_TRACE"
GROUP BY event_name, radio_type
ORDER BY event_name, radio_type;

디스크에서 특정 유형의 파일을 로드하기 위한 캐시 적중률 계산

이 분석은 file-extension 이라는 사용자 정의 속성과 캐시 적중의 경우 1 로 설정되고 캐시 누락의 경우 0 으로 설정된 cache-hit 라는 사용자 정의 메트릭( TRACE_METRIC )을 사용하여 디스크에서 로드하기 위한 사용자 정의 코드 추적을 계측했다고 가정합니다.

예를 들어 디스크에서 PNG 파일을 로드하기 위한 캐시 적중률을 계산할 수 있습니다.

SELECT AVG(trace_info.metric_info.metric_value) AS cache_hit_rate
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "TRACE_METRIC"
AND event_name = "cache-hit"
AND parent_trace_name = "loadFromDisk"
AND STRUCT("file-extension", "png") IN UNNEST(custom_attributes);

사용자가 네트워크 요청을 보내는 시간 확인

예를 들어 미국 사용자가 앱에서 네트워크 요청을 보내는 시간을 확인할 수 있습니다.

SELECT
  count(1) AS hourly_count,
  EXTRACT(HOUR FROM event_timestamp) AS hour_of_day
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "NETWORK_REQUEST"
AND country = "US"
GROUP BY 2 ORDER BY 2;

성능 모니터링 데이터를 어디서나 가져갈 수 있습니다.

때때로 Performance Monitoring 데이터에 서버 측에서 액세스하거나 다른 타사 솔루션으로 푸시하려고 합니다. 현재 데이터 내보내기에는 요금이 부과되지 않습니다.

다음을 통해 데이터를 내보낼 수 있습니다.

  • BigQuery 웹 UI 사용

  • CLI 명령 bq extract 실행

  • API 또는 클라이언트 라이브러리를 통해 추출 작업 제출

가격

Performance Monitoring에서 데이터를 내보내는 데 요금이 부과되지 않으며 BigQuery는 넉넉한 무료 사용량 한도를 제공합니다. 자세한 내용은 BigQuery 가격 책정 또는 BigQuery 샌드박스 를 참조하세요.