คุณสามารถส่งออกPerformance Monitoringข้อมูลจากแอป Apple และ Android ไปยัง BigQuery เพื่อวิเคราะห์เพิ่มเติมได้ BigQuery ช่วยให้คุณวิเคราะห์ข้อมูลโดยใช้ BigQuery SQL ส่งออกไปยังผู้ให้บริการระบบคลาวด์รายอื่น และใช้ ข้อมูลสําหรับโมเดล ML ที่กําหนดเองได้ด้วย
เปิดใช้การส่งออก BigQuery
ไปที่หน้า การผสานรวม ในคอนโซล Firebase แล้วคลิกลิงก์ในการ์ด BigQuery
ทำตามวิธีการบนหน้าจอเพื่อเปิดใช้ BigQuery
เมื่อเปิดใช้การส่งออก BigQuery สำหรับ Performance Monitoring จะเกิดสิ่งต่อไปนี้
Firebase ส่งออกสำเนาข้อมูลที่มีอยู่ไปยัง BigQuery การเผยแพร่ข้อมูลเริ่มต้นสำหรับการส่งออกอาจใช้เวลาถึง 48 ชั่วโมงจึงจะเสร็จสมบูรณ์
- คุณสามารถกำหนดเวลาการป้อนข้อมูลย้อนหลังด้วยตนเอง ได้สูงสุด 30 วันที่ผ่านมา หรือสำหรับวันที่ล่าสุดเมื่อคุณเปิดใช้BigQuery การส่งออก (แล้วแต่ว่าวันที่ใดล่าสุด)
หลังจากสร้างชุดข้อมูลแล้ว คุณจะเปลี่ยนแปลงตำแหน่งไม่ได้ แต่จะคัดลอกชุดข้อมูลไปยังตำแหน่งอื่นหรือย้าย (สร้างใหม่) ชุดข้อมูลไปยังตำแหน่งอื่นด้วยตนเองได้ ดูข้อมูลเพิ่มเติมได้ที่เปลี่ยนตำแหน่งชุดข้อมูล
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
is prefix_st_
บวกชื่อหน้าจอจริง
คำขอเครือข่าย - การติดตามตลอดอายุของคำขอเครือข่าย (การติดตามคำขอเครือข่าย HTTP)
event_type
คือNETWORK_REQUEST
event_name
คือรูปแบบที่จัดหมวดหมู่ของ URL คำขอเครือข่าย
เหตุการณ์ประสิทธิภาพแต่ละรายการจะมีแอตทริบิวต์ของเหตุการณ์ (เช่น ประเทศและผู้ให้บริการเครือข่ายของอุปกรณ์ไคลเอ็นต์) รวมถึงข้อมูลเฉพาะของเหตุการณ์ ดังนี้
- การติดตามระยะเวลา เมตริกการติดตาม และการติดตามหน้าจอมี
trace_info
- เมตริกการติดตามประกอบด้วย
trace_info.metric_info
- การติดตามหน้าจอมี
trace_info.screen_info
- การติดตามเครือข่ายมี
network_info
สคีมาข้อมูลโดยละเอียด
ชื่อช่อง | ประเภท | คำอธิบาย |
---|---|---|
event_timestamp | การประทับเวลา | การประทับเวลาตั้งแต่ Epoch เมื่อเหตุการณ์เริ่มต้นในอุปกรณ์ไคลเอ็นต์ (การเริ่มต้นการติดตาม การเริ่มต้นเครือข่าย ฯลฯ) |
app_display_version | สตริง | แสดงเวอร์ชันของแอปพลิเคชัน (เช่น "4.1.7")
|
app_build_version | สตริง | เวอร์ชันบิลด์ของแอปพลิเคชัน (เช่น "1523456")
|
os_version | สตริง | เวอร์ชันของระบบปฏิบัติการในอุปกรณ์ไคลเอ็นต์
|
device_name | สตริง | ชื่ออุปกรณ์ไคลเอ็นต์ (เช่น "Google Pixel") |
country | สตริง | รหัสประเทศแบบ 2 ตัวอักษรของประเทศที่เกิดเหตุการณ์ ขึ้น (เช่น "US" หรือ "ZZ" สำหรับประเทศที่ไม่รู้จัก) |
ผู้ให้บริการ | สตริง | ผู้ให้บริการของอุปกรณ์ไคลเอ็นต์ |
radio_type | สตริง | ประเภทวิทยุที่ใช้งานอยู่เมื่อเกิดเหตุการณ์ (เช่น "WIFI") |
custom_attributes | ARRAY<RECORD> | แอตทริบิวต์ที่กําหนดเองทั้งหมดที่แนบมากับเหตุการณ์นี้ |
custom_attributes.key | สตริง | คีย์ของแอตทริบิวต์ที่กำหนดเอง |
custom_attributes.value | สตริง | ค่าของแอตทริบิวต์ที่กำหนดเอง |
event_type | สตริง | ประเภทของเหตุการณ์ ค่าที่เป็นไปได้มีดังนี้
|
event_name | สตริง | ชื่อกิจกรรม
|
parent_trace_name | สตริง | ชื่อของการติดตามระดับบนสุดที่มีเมตริกการติดตาม มีเฉพาะสำหรับ TRACE_METRIC |
trace_info | RECORD | มีเฉพาะใน DURATION_TRACE
SCREEN_TRACE และ TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | RECORD | ใช้ได้กับ SCREEN_TRACE เท่านั้น |
trace_info.screen_info.slow_frame_ratio | float64 | อัตราส่วนของเฟรมที่ช้าสำหรับการติดตามหน้าจอนี้ ซึ่งอยู่ระหว่าง 0 ถึง 1 (เช่น ค่า 0.05 หมายความว่า 5% ของเฟรมสำหรับอินสแตนซ์หน้าจอนี้ ใช้เวลาในการแสดงผลนานกว่า 16 มิลลิวินาที) |
trace_info.screen_info.frozen_frame_ratio | float64 | อัตราส่วนของเฟรมที่ค้างสำหรับการติดตามหน้าจอนี้ ซึ่งอยู่ระหว่าง 0 ถึง 1 (เช่น ค่า 0.05 หมายความว่าเฟรม 5% สำหรับอินสแตนซ์หน้าจอนี้ ใช้เวลาในการแสดงผลนานกว่า 700 มิลลิวินาที) |
trace_info.metric_info | RECORD | ใช้ได้กับ TRACE_METRIC เท่านั้น |
trace_info.metric_info.metric_value | int64 | ค่าของเมตริกการติดตาม |
network_info | 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 ที่ส่งออกได้
จับคู่ข้อมูลที่เห็นในคอนโซล
แดชบอร์ด Firebase จะรวบรวมข้อมูลรายวันในเขตเวลา America/Los_Angeles
หากต้องการให้ตรงกับสิ่งที่เห็นในคอนโซล ฟังก์ชันวันที่ควรตั้งค่า
America/Los_Angeles
อย่างชัดเจนเป็นเขตเวลา มิฉะนั้นฟังก์ชันวันที่จะใช้ UTC โดยค่าเริ่มต้น
SELECT DATE(event_timestamp, 'America/Los_Angeles') AS daily_date, APPROX_QUANTILES(trace_info.duration_us, 100)[OFFSET(90)] / 1000000 AS p90_seconds, FROM `TABLE_NAME` WHERE DATE(event_timestamp, 'America/Los_Angeles') >= DATE_SUB( PARSE_DATE('%Y%m%d', 'YYYY-MM-DD'), INTERVAL 7 DAY) AND DATE(event_timestamp, 'America/Los_Angeles') <= PARSE_DATE('%Y%m%d', 'YYYY-MM-DD') AND event_name = '_app_start' GROUP BY 1 ORDER BY 1 DESC;
ดูรายละเอียดเวลาในการตอบสนองเฉลี่ยของการเริ่มต้นแอปตามประเทศ
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;
อัตราการเข้าถึงแคชของ Compute สำหรับการโหลดไฟล์บางประเภทจากดิสก์
การวิเคราะห์นี้ถือว่าคุณได้ติดตั้งเครื่องมือติดตามโค้ดที่กำหนดเองสำหรับการโหลดจากดิสก์ด้วยแอตทริบิวต์ที่กำหนดเองชื่อ file-extension
และเมตริกที่กำหนดเอง (TRACE_METRIC
) ชื่อ cache-hit
ซึ่งตั้งค่าเป็น 1
หากแคชตรง และ 0
หากแคชไม่ตรง
เช่น คุณสามารถคำนวณอัตราการเข้าถึงแคชสำหรับการโหลดไฟล์ 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