ส่งออกข้อมูล Performance Monitoring ไปยัง BigQuery

คุณสามารถส่งออกข้อมูล Performance Monitoring จากแอป Apple และ Android ไปยัง BigQuery เพื่อการวิเคราะห์เพิ่มเติมได้ BigQuery ช่วยให้คุณสามารถวิเคราะห์ข้อมูลได้โดยใช้ BigQuery แล้วส่งออกไปยังผู้ให้บริการคลาวด์รายอื่น หรือแม้แต่ใช้ สำหรับโมเดล ML ที่กำหนดเอง

เปิดใช้การส่งออก BigQuery

  1. ไปที่หน้า การผสานรวม ในคอนโซล Firebase จากนั้นคลิกลิงก์ใน BigQuery

  2. ทำตามวิธีการบนหน้าจอเพื่อเปิดใช้BigQuery

    เมื่อคุณเปิดใช้การส่งออก BigQuery สำหรับ Performance Monitoring จะเกิดสิ่งต่อไปนี้ เกิดขึ้น:

    • Firebase จะส่งออกสำเนาข้อมูลที่มีอยู่ไปยัง BigQuery การเผยแพร่ข้อมูลเพื่อส่งออกในช่วงแรกอาจใช้เวลาถึง ใช้เวลา 48 ชั่วโมงในการดำเนินการให้เสร็จสมบูรณ์

    • หลังจากสร้างชุดข้อมูลแล้ว ตำแหน่ง ไม่สามารถเปลี่ยนแปลง แต่คัดลอกชุดข้อมูลไปยังตำแหน่งอื่นได้ หรือย้าย (สร้างใหม่) ชุดข้อมูลไปยังตำแหน่งอื่นด้วยตนเอง เพื่อเรียนรู้ ดูข้อมูลเพิ่มเติมที่เปลี่ยนตำแหน่งชุดข้อมูล

    • Firebase จะตั้งค่าการซิงค์ข้อมูลจากโปรเจ็กต์ Firebase เป็นประจำเพื่อ BigQuery การดำเนินการส่งออกรายวันเหล่านี้มักจะเสร็จสิ้นภายใน 24 ชั่วโมงหลังจากตั้งเวลาไว้

    • โดยค่าเริ่มต้น แอปทั้งหมดในโปรเจ็กต์จะลิงก์กับ BigQuery ช่วง แอปที่คุณเพิ่มในโปรเจ็กต์ในภายหลังจะลิงก์โดยอัตโนมัติ BigQuery คุณสามารถ จัดการแอปที่ส่งข้อมูล

หากต้องการปิดใช้งานการส่งออก BigQuery ยกเลิกการลิงก์โปรเจ็กต์ ในคอนโซล Firebase

ข้อมูลใดบ้างที่ส่งออกไปยัง BigQuery

สำหรับแต่ละแอปในโปรเจ็กต์ การส่งออกจะสร้างตารางที่รวมข้อมูล เหตุการณ์ด้านประสิทธิภาพที่บันทึกไว้ แต่ละแถวในตารางเป็นเหตุการณ์ด้านประสิทธิภาพรายการเดียว ที่อาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้

  • การติดตามระยะเวลา — การติดตามที่รวบรวมเมตริก "ระยะเวลา" โดยค่าเริ่มต้น ซึ่งรวมถึงการเริ่มต้นแอป แอปที่ทำงานอยู่เบื้องหน้า และแอปที่ทำงานอยู่เบื้องหลัง ตลอดจนการติดตามโค้ดที่กําหนดเองซึ่งนักพัฒนาแอปติดตั้งใช้งาน

    • event_type คือ DURATION_TRACE
    • event_name เหมือนกับชื่อการติดตาม
  • เมตริกการติดตาม — เมตริกที่กำหนดเองซึ่งเชื่อมโยงกับ การติดตามโค้ดที่กำหนดเองที่กำหนดโดยนักพัฒนาซอฟต์แวร์

    • event_type คือ TRACE_METRIC
    • event_name คือชื่อของเมตริก
    • parent_trace_name คือชื่อการติดตามที่มีเมตริกนี้
  • การติดตามหน้าจอ — การติดตามที่ครอบคลุมอายุการใช้งานของหน้าจอ (การแสดงผลหน้าจอ) การติดตาม)

    • event_type คือ SCREEN_TRACE
    • event_name คือคำนำหน้า _st_ บวกชื่อหน้าจอจริง
  • คําขอเครือข่าย — การติดตามตลอดอายุของคําขอเครือข่าย (การติดตามคําขอเครือข่าย HTTP)

    • event_type คือ NETWORK_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
เวอร์ชันระบบปฏิบัติการ สตริง เวอร์ชันระบบปฏิบัติการของอุปกรณ์ไคลเอ็นต์
  • สำหรับ Android — ระดับ API ของ Android (เช่น "26")
  • สำหรับ iOS — เวอร์ชัน iOS (เช่น "11.4")
device_name [ชื่ออุปกรณ์] สตริง ชื่อของอุปกรณ์ไคลเอ็นต์ (เช่น "Google Pixel")
country สตริง รหัสประเทศแบบ 2 ตัวอักษรของประเทศที่ใช้ทำกิจกรรม เกิดขึ้น (เช่น "US" หรือ "ZZ" สําหรับประเทศที่ไม่รู้จัก)
ผู้ให้บริการ สตริง ผู้ให้บริการอุปกรณ์ไคลเอ็นต์
radio_type สตริง ประเภทสัญญาณวิทยุที่ใช้งานอยู่เมื่อเกิดเหตุการณ์ (เช่น "Wi-Fi")
custom_attributes ARRAY <RECORD> แอตทริบิวต์ที่กำหนดเองทั้งหมดที่แนบมากับเหตุการณ์นี้
custom_attributes.key สตริง คีย์ของแอตทริบิวต์ที่กำหนดเอง
custom_attributes.value สตริง ค่าของแอตทริบิวต์ที่กำหนดเอง
ประเภทเหตุการณ์ สตริง ประเภทกิจกรรม ค่าที่เป็นไปได้ ได้แก่
  • DURATION_TRACE — การติดตามที่รวบรวมเมตริก "ระยะเวลา" โดยค่าเริ่มต้น ซึ่งรวมถึงการเริ่มต้นแอป แอปที่ทำงานอยู่เบื้องหน้า และแอปที่ทำงานอยู่เบื้องหลัง รวมถึงการติดตามโค้ดที่กำหนดเองซึ่งนักพัฒนาแอปติดตั้งใช้งาน
  • SCREEN_TRACE — ร่องรอยตลอดอายุการใช้งานของหน้าจอ (ร่องรอยการแสดงผลของหน้าจอ)
  • TRACE_METRIC — เมตริกที่กําหนดเองซึ่งเชื่อมโยงกับการติดตามโค้ดที่กําหนดเองที่นักพัฒนาซอฟต์แวร์ติดตั้งใช้งาน
  • NETWORK_REQUEST — การติดตามตลอดอายุของคำขอเครือข่าย (การติดตามคำขอเครือข่าย HTTP)
event_name สตริง ชื่อเหตุการณ์
  • สำหรับ DURATION_TRACE — ชื่อการติดตาม
  • สำหรับ TRACE_METRIC — ชื่อเมตริกที่กำหนดเอง
  • สำหรับ SCREEN_TRACE — ติดตาม _st_ รายการ ตามชื่อการติดตาม
  • สําหรับ NETWORK_REQUEST — รูปแบบ URL คําขอเครือข่าย
ชื่อการติดตามระดับบนสุด สตริง ชื่อของการติดตามระดับบนสุดที่มีเมตริกการติดตาม
นำเสนอสำหรับ TRACE_METRIC เท่านั้น
ข้อมูลการติดตาม RECORD มีเฉพาะใน DURATION_TRACE, SCREEN_TRACE และ TRACE_METRIC
Track_info.duration_th int64
  • สำหรับ DURATION_TRACE และ SCREEN_TRACE — ระยะเวลา ("ระยะเวลา") ตั้งแต่ต้นจนจบ การติดตาม
  • สำหรับ TRACE_METRIC — ระยะเวลา ("ระยะเวลา") จากจุดเริ่มต้นถึงจุดสิ้นสุดของการติดตามระดับบนสุด
หน่วย: ไมโครวินาที
Track_info.screen_info RECORD นำเสนอสำหรับ SCREEN_TRACE เท่านั้น
Track_info.screen_info.slow_frame_ratio Float 64 อัตราส่วนของเฟรมที่ช้าสำหรับการติดตามหน้าจอนี้ระหว่าง 0 ถึง 1 (เช่น ค่า 0.05 หมายถึง 5% ของเฟรมสำหรับหน้าจอนี้ อินสแตนซ์ใช้เวลาแสดงผลนานกว่า 16 มิลลิวินาที)
Track_info.screen_info.frozen_frame_ratio Float 64 อัตราส่วนของเฟรมที่ค้างสำหรับการติดตามหน้าจอนี้ระหว่าง 0 ถึง 1 (เช่น ค่า 0.05 หมายถึง 5% ของเฟรมสำหรับหน้าจอนี้ อินสแตนซ์ใช้เวลาแสดงผลนานกว่า 700 มิลลิวินาที)
Track_info.metric_info RECORD แสดงสำหรับ TRACE_METRIC เท่านั้น
Track_info.metric_info.metric_value int64 ค่าของเมตริกการติดตาม
ข้อมูลเครือข่าย RECORD นำเสนอสำหรับ 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 เมื่อการตอบสนองของเครือข่าย เสร็จสมบูรณ์แล้ว
หน่วย: ไมโครวินาที

คุณใช้ข้อมูลที่ส่งออกทำอะไรได้บ้าง

ส่วนต่อไปนี้แสดงตัวอย่างการค้นหาที่คุณเรียกใช้ได้ใน BigQuery กับข้อมูล Performance Monitoring ที่ส่งออก

ดูรายละเอียดเวลาในการตอบสนองของการเริ่มแอปโดยเฉลี่ยตามประเทศ

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;

ตรวจสอบอัตราส่วนของเฟรมที่ค้างกับเงื่อนไขต่างๆ

ตัวอย่างเช่น คุณสามารถตรวจสอบอัตราส่วนของเฟรมที่ค้างควบคู่ไปกับจำนวน เวลาที่ผู้ใช้อยู่ในแต่ละหน้าจอของแอปเมื่อใช้วิทยุประเภทต่างๆ (Wi-Fi, 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;

อัตรา Hit ของแคชการประมวลผลสำหรับการโหลดไฟล์บางประเภทจากดิสก์

การวิเคราะห์นี้จะสมมติว่าคุณใช้การติดตามโค้ดที่กำหนดเองสำหรับการโหลดจาก ที่มีแอตทริบิวต์ที่กำหนดเองชื่อ file-extension และเมตริกที่กำหนดเอง ( TRACE_METRIC) ตั้งชื่อ cache-hit ที่ตั้งค่าเป็น 1 หากพบแคชและ 0 หาก ไม่พบแคช

เช่น คุณสามารถคำนวณอัตรา Hit ของแคชสำหรับการโหลดไฟล์ 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 ไปได้ทุกที่

บางครั้งคุณต้องการเข้าถึงPerformance Monitoringข้อมูลฝั่งเซิร์ฟเวอร์หรือส่งข้อมูลไปยังโซลูชันของบุคคลที่สามอื่น การส่งออกข้อมูลไม่มีค่าใช้จ่ายในขณะนี้

คุณส่งออกข้อมูลได้โดยใช้วิธีต่อไปนี้

  • การใช้ UI เว็บของ BigQuery

  • การเรียกใช้คำสั่ง CLI bq extract

  • การส่ง ดึงข้อมูลงาน ผ่าน API หรือไลบรารีของไคลเอ็นต์

ราคา

การส่งออกข้อมูลจาก Performance Monitoring และ BigQuery ไม่มีค่าใช้จ่าย ให้ขีดจำกัดการใช้งานที่ไม่มีค่าใช้จ่ายมากมาย ดูข้อมูลโดยละเอียดได้ที่ราคา BigQuery หรือแซนด์บ็อกซ์ BigQuery