אתם יכולים לייצא נתונים של Performance Monitoring מאפליקציות ל-Apple ולאפליקציות ל-Android אל BigQuery כדי לנתח אותם לעומק. בעזרת BigQuery אתם יכולים לנתח את הנתונים באמצעות SQL של BigQuery, לייצא אותם לספק שירותי ענן אחר ואפילו להשתמש בהם במודלים של למידת מכונה בהתאמה אישית.
הפעלת הייצוא של BigQuery
נכנסים לדף Integrations במסוף Firebase ולוחצים על Link בכרטיס 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הוא הקידומת_st_בתוספת שם המסך בפועל
יומן מעקב של בקשות לאחזור מהרשת – יומני מעקב שמתעדים את כל משך החיים של בקשה לאחזור מהרשת (יומני מעקב של בקשות לאחזור מהרשת ב-HTTP)
event_typeהואNETWORK_REQUEST-
event_nameהיא התבנית המסווגת של כתובת ה-URL של הבקשה לאחזור מהרשת
כל אירוע ביצועים מכיל מאפיינים של האירוע (כמו המדינה והספק של מכשיר הלקוח), וגם מידע ספציפי לאירוע:
- מעקבי משך זמן, מדדי מעקב ומעקבי מסך מכילים
trace_info - מדדי המעקב מכילים את
trace_info.metric_info - המעקבים אחרי המסך מכילים
trace_info.screen_info - מעקבי הרשת מכילים
network_info
סכימת נתונים מפורטת
| שם השדה | סוג | תיאור |
|---|---|---|
| event_timestamp | חותמת זמן | חותמת זמן מאז תחילת התקופה שבה האירוע התחיל במכשיר הלקוח (תחילת המעקב, תחילת הרשת וכו') |
| app_display_version | מחרוזת | גרסת התצוגה של האפליקציה (לדוגמה, "4.1.7")
|
| app_build_version | מחרוזת | גרסת ה-build של האפליקציה (לדוגמה, "1523456")
|
| os_version | מחרוזת | גרסת מערכת ההפעלה של מכשיר הלקוח
|
| device_name | מחרוזת | שם מכשיר הלקוח (לדוגמה, Google Pixel) |
| country | מחרוזת | קוד מדינה בן שתי אותיות של המדינה שבה האירוע התרחש (לדוגמה, "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 | רשומה | מוצג רק ב-DURATION_TRACE,
SCREEN_TRACE ו-TRACE_METRIC |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | רשומה | מופיע רק ב-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 | רשומה | האפשרות הזו קיימת רק ב-TRACE_METRIC |
| trace_info.metric_info.metric_value | int64 | הערך של מדד המעקב |
| network_info | רשומה | מופיע רק ב-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 | גודל המטען הייעודי (payload) של הבקשה לאחזור מהרשת יחידה: בייט |
| network_info.response_payload_bytes | int64 | גודל המטען הייעודי (payload) של התגובה ברשת יחידה: בייט |
| 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;
חישוב שיעור המציאה במטמון (cache hit) לטעינת סוגים מסוימים של קבצים מהדיסק
בניתוח הזה אנחנו מניחים שהגדרתם מעקב אחר קוד בהתאמה אישית לטעינה מהדיסק, עם מאפיין מותאם אישית בשם 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 בצד השרת או להעביר אותם לפתרון אחר של צד שלישי. נכון לעכשיו, אין חיוב על ייצוא נתונים.
אתם יכולים לייצא את הנתונים שלכם בדרכים הבאות:
שימוש בממשק האינטרנט של BigQuery
מריצים את פקודת ה-CLI
bq extractשליחת משימת חילוץ באמצעות ה-API או ספריות הלקוח.
תמחור
אין חיוב על ייצוא נתונים מ-Performance Monitoring, ו-BigQuery מספקת מגבלות שימוש נדיבות ללא עלות. למידע מפורט, קראו על התמחור של BigQuery או על ארגז החול של BigQuery.