אפשר לייצא נתוני Performance Monitoring מאפליקציות של Apple ו-Android אל BigQuery לצורך ניתוח נוסף. BigQuery מאפשר לנתח את הנתונים באמצעות BigQuery SQL, לייצא אותם לספק ענן אחר ואפילו להשתמש בנתונים ליצירת מודלים מותאמים אישית של למידת מכונה.
הפעלת הייצוא של 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 | מחרוזת | גרסת ה-OS של מכשיר הלקוח
|
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 | גודל המטען הייעודי של תגובת הרשת יחידה: בייט |
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;
חישוב שיעור ההיטים במטמון לטעינת סוגי קבצים מסוימים מהדיסק
הניתוח הזה מבוסס על ההנחה שהטמעתם מעקב קוד מותאם אישית לטעינה מהדיסק באמצעות מאפיין מותאם אישית בשם 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.