ส่งออกข้อมูล 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

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

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

    • 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" สําหรับประเทศที่ไม่รู้จัก)
ผู้ให้บริการ สตริง ผู้ให้บริการอุปกรณ์ไคลเอ็นต์
ประเภทวิทยุ สตริง ประเภทวิทยุที่ใช้งานอยู่เมื่อเกิดเหตุการณ์ (เช่น "WIFI")
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;

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

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

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

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

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

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

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

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

ราคา

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