אפשר לייצא נתוני Performance Monitoring מאפליקציות של Apple ו-Android אל BigQuery לצורך ניתוח נוסף. BigQuery מאפשר לכם לנתח את הנתונים באמצעות BigQuery SQL, לייצא אותם לספק ענן אחר ואפילו להשתמש בנתונים במודלים של ML בהתאמה אישית.
הפעלת הייצוא של 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 | חותמת זמן | חותמת זמן מאז תקופת ה-Epoch שבה האירוע התחיל במכשיר הלקוח (התחלת המעקב, התחלת הרשת וכו') |
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 | גודל המטען הייעודי של תגובת הרשת יחידה: בייט |
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 באינטרנט
הרצת הפקודה
bq extract
ב-CLIשליחת משימת חילוץ באמצעות ה-API או ספריות הלקוח.
תמחור
ייצוא נתונים מ-Performance Monitoring לא כרוך בתשלום, ו-Performance Monitoring מספק מגבלות שימוש נדיבות ללא עלות.BigQuery למידע מפורט, אפשר לעיין בBigQuery מחירון או בארגז החול של BigQuery.