ייצוא נתוני מעקב הביצועים ל-BigQuery

אפשר לייצא נתוני Performance Monitoring מאפליקציות ל-Apple ול-Android אל BigQuery לצורך ניתוח נוסף. BigQuery מאפשר לנתח את הנתונים באמצעות BigQuery SQL, לייצא אותו לספק שירותי ענן אחר, ואפילו להשתמש של המודלים המותאמים אישית של למידת מכונה.

הפעלת ייצוא של BigQuery

  1. נכנסים אל שילובים במסוף Firebase ואז לוחצים על קישור ב-BigQuery. של Google.

  2. פועלים לפי ההוראות במסך כדי להפעיל את BigQuery.

    כשמפעילים את הייצוא של BigQuery עבור Performance Monitoring, הפעולות הבאות: קורה:

    • מערכת Firebase מייצאת עותק של הנתונים הקיימים אל BigQuery. ההפצה הראשונית של הנתונים לייצוא עשויה להימשך עד נשארו 48 שעות.

    • אי אפשר לשנות את המיקום אחרי שיוצרים את מערך הנתונים, אבל אפשר להעתיק את מערך הנתונים למיקום אחר או להעביר אותו ידנית למיקום אחר (וליצור אותו מחדש). למידה מידע נוסף זמין במאמר שינוי המיקום של מערך הנתונים.

    • מערכת 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')
  • ל-Android – VersionName
  • ב-iOS – CFBundleShortVersionString
app_build_version מחרוזת גרסת ה-build של האפליקציה (לדוגמה, '1523456')
  • ל-Android – VersionCode
  • ב-iOS – CFBundleVersion
os_version מחרוזת גרסת ה-OS של מכשיר הלקוח
  • ב-Android – רמת ה-API של Android (לדוגמה, '26')
  • ב-iOS – גרסת iOS (לדוגמה 11.4)
שם_מכשיר מחרוזת השם של מכשיר הלקוח (לדוגמה, Google Pixel)
country מחרוזת קוד מדינה בן שתי אותיות של המדינה שממנה הגיע האירוע התרחש (לדוגמה, "US" או "ZZ" עבור מדינה לא ידועה)
חברת תובלה מחרוזת הספק של מכשיר הלקוח
radio_type מחרוזת סוג הרדיו הפעיל כשהאירוע התרחש (לדוגמה, 'WIFI')
מאפיינים מותאמים אישית ARRAY<RECORD> כל המאפיינים המותאמים אישית מצורפים לאירוע הזה
custom_Attributes.key מחרוזת המפתח של המאפיין המותאם אישית
custom_attributes.value מחרוזת הערך של המאפיין המותאם אישית
event_type מחרוזת סוג האירוע; ערכים אפשריים:
  • DURATION_TRACE – עקבות שאוספים, לפי ברירת מחדל, המדד 'משך זמן', שכולל את 'התחלת האפליקציה', אפליקציות ברקע וברקע, וגם כל מעקבי קוד בהתאמה אישית בהטמעה של המפתח
  • SCREEN_TRACE – טרייסים שנמשכים לכל משך החיים של המסך (טרייסים של עיבוד מסך)
  • TRACE_METRIC – מדדים מותאמים אישית שמשויך למעקבי קוד בהתאמה אישית שרשמתם על ידי המפתח
  • NETWORK_REQUEST – עקבות לאורך כל משך החיים של בקשת רשת (מעקב אחר בקשות רשת HTTP)
event_name מחרוזת שם האירוע
  • של DURATION_TRACE – שם המעקב
  • עבור TRACE_METRIC – שם המדד המותאם אישית
  • עבור SCREEN_TRACE_st_ ואז שם המעקב
  • עבור NETWORK_REQUEST – תבנית של כתובת URL לבקשת רשת
הורה_trace_name מחרוזת השם של דוח המעקב הראשי שמכיל את מדד המעקב
מוצג רק עבור TRACE_METRIC
פרטי_מעקב רשומה קיימת רק ב-DURATION_TRACE,‏ SCREEN_TRACE ו-TRACE_METRIC
train_info.duration_us int64
  • של DURATION_TRACE וגם SCREEN_TRACE — משך הזמן ("משך זמן") מתחילתו ועד ס��פו המעקב
  • ל-TRACE_METRIC – משך הזמן ("משך זמן") מתחילתו ועד סופו של מעקב ההורה
יחידה: מיקרו-שנייה
trace_info.screen_info רשומה מוצג רק עבור SCREEN_TRACE
train_info.screen_info.slow_frame_ratio מספר ממשי (float)64 יחס הפריימים האיטיים למעקב המסך הזה, בין 0 ל-1 (לדוגמה, ערך של 0.05 פירושו 5% מהפריימים במסך הזה העיבוד של המכונה נמשך יותר מ-16 אלפיות השנייה)
train_info.screen_info.frozen_frame_ratio מספר ממשי (float)64 יחס הפריימים שקפואים למעקב המסך הזה, בין 0 ל-1 (לדוגמה, ערך של 0.05 פירושו 5% מהפריימים במסך הזה העיבוד של המכונה נמשך יותר מ-700 אלפיות השנייה)
trace_info.metric_info רשומה מוצג רק ל-TRACE_METRIC
train_info.metric_info.metric_value int64 הערך של מדד המעקב
פרטי_רשת רשומה מוצג רק עבור NETWORK_REQUEST
network_info.response_code . int64 קוד תגובת HTTP לתגובת הרשת (לדוגמה: 200, 404)
network_info.response_mime_type מחרוזת סוג ה-MIME של תגובת הרשת (לדוגמה, 'text/html')
network_info.request_http_method [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 שיוצאו.

הצגת פירוט של זמן האחזור הממוצע להפעלת אפליקציה לפי מדינה

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 או להעביר אותו בדחיפה בפתרון אחר של צד שלישי. ייצוא הנתונים לא כרוך בתשלום כרגע.

אפשר לייצא את הנתונים בדרכים הבאות:

  • באמצעות ממשק המשתמש באינטרנט של BigQuery

  • הרצת הפקו��ה ב-CLI bq extract

  • שליחת משימת חילוץ דרך ה-API או ספריות הלקוח.

תמחור

ייצוא נתונים מ-Performance Monitoring ומ-BigQuery לא כרוך בתשלום מספק מגבלות שימוש נדיבות ללא עלות. לקבלת מידע מפורט, אפשר לעיין במאמר תמחור של BigQuery או ארגז החול של BigQuery.