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

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

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

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

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

    เมื่อคุณเปิดใช้ BigQuery Export สำหรับการตรวจสอบประสิทธิภาพ จะเกิดสิ่งต่อไปนี้

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

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

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

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

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

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

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

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

    • 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 เมื่อกิจกรรมเริ่มต้นในอุปกรณ์ไคลเอ็นต์ (การเริ่มติดตาม การเริ่มเครือข่าย ฯลฯ)
เวอร์ชันที่แสดงของแอป string เวอร์ชันที่แสดงของแอปพลิเคชัน (เช่น "4.1.7")
  • สำหรับ Android — VersionName
  • สำหรับ iOS — CFBundleShortVersionString
app_build_version string เวอร์ชันบิลด์ของแอปพลิเคชัน (เช่น "1523456")
  • สำหรับ Android — VersionCode
  • สำหรับ iOS — CFBundleVersion
เวอร์ชันระบบปฏิบัติการ string เวอร์ชันระบบปฏิบัติการของอุปกรณ์ไคลเอ็นต์
  • สำหรับ Android — ระดับ API ของ Android (เช่น "26")
  • สำหรับ iOS — เวอร์ชัน iOS (เช่น "11.4")
device_name [ชื่ออุปกรณ์] string ชื่อของอุปกรณ์ไคลเอ็นต์ (เช่น "Google Pixel")
country string รหัสประเทศแบบ 2 ตัวอักษรของประเทศที่เกิดเหตุการณ์ (เช่น "US" หรือ "ZZ" สำหรับประเทศที่ไม่รู้จัก)
ผู้ให้บริการขนส่ง string ผู้ให้บริการอุปกรณ์ไคลเอ็นต์
ประเภทวิทยุ string ประเภทวิทยุที่ใช้งานอยู่เมื่อเกิดเหตุการณ์ (เช่น "WIFI")
custom_attributes ARRAY<RECORD> แอตทริบิวต์ที่กำหนดเองทั้งหมดที่แนบมากับเหตุการณ์นี้
custom_attributes.key string คีย์ของแอตทริบิวต์ที่กำหนดเอง
custom_attributes.value string ค่าของแอตทริบิวต์ที่กำหนดเอง
ประเภทเหตุการณ์ string ประเภทเหตุการณ์ ค่าที่เป็นไปได้ ได้แก่
  • DURATION_TRACE — โดยค่าเริ่มต้น การติดตามที่รวบรวมเมตริก "ระยะเวลา" ซึ่งประกอบด้วยการเริ่มต้นแอป การติดตามในแอป และการติดตามในเบื้องหลัง ตลอดจนการติดตามโค้ดที่กำหนดเองที่มาจากนักพัฒนาซอฟต์แวร์
  • SCREEN_TRACE — การติดตามที่ครอบคลุมอายุการใช้งานของหน้าจอ (การติดตามการแสดงผลหน้าจอ)
  • TRACE_METRIC — เมตริกที่กำหนดเองซึ่งเชื่อมโยงกับการติดตามโค้ดที่กำหนดเองที่กำหนดโดยนักพัฒนาซอฟต์แวร์
  • NETWORK_REQUEST — การติดตามที่ครอบคลุมอายุการใช้งานของคำขอเครือข่าย (การติดตามคำขอเครือข่าย HTTP)
event_name string ชื่อเหตุการณ์
  • สำหรับ DURATION_TRACE — ชื่อการติดตาม
  • สำหรับ TRACE_METRIC — ชื่อเมตริกที่กำหนดเอง
  • สำหรับ SCREEN_TRACE_st_ ตามด้วยชื่อการติดตาม
  • สำหรับ NETWORK_REQUEST — รูปแบบ URL คำขอเครือข่าย
ชื่อการติดตามระดับบนสุด string ชื่อของการติดตามระดับบนสุดที่มีเมตริกการติดตาม
แสดงเฉพาะสำหรับ 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 string ประเภท MIME ของการตอบสนองของเครือข่าย (เช่น "text/html")
network_info.request_http_method string เมธอด 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 เทียบกับข้อมูลการตรวจสอบประสิทธิภาพที่ส่งออกได้

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

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;

คำนวณอัตราการค้นพบแคชสำหรับการโหลดไฟล์บางประเภทจากดิสก์

การวิเคราะห์นี้จะสมมติว่าคุณใช้การติดตามโค้ดที่กำหนดเองสำหรับการโหลดจากดิสก์ด้วยแอตทริบิวต์ที่กำหนดเองชื่อ file-extension และเมตริกที่กำหนดเอง (a 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;

นำข้อมูลการตรวจสอบประสิทธิภาพไปไว้ที่ใดก็ได้

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

คุณสามารถส่งออกข้อมูลโดยทำดังนี้

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

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

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

ราคา

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