ייצוא נתוני ניטור ביצועים ל-BigQuery

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

אפשר ייצוא BigQuery

  1. עבור לדף השילובים במסוף Firebase, ולאחר מכן לחץ על קישור בכרטיס BigQuery .

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

    כאשר אתה מפעיל ייצוא BigQuery עבור ניטור ביצועים, מתרחשים הדברים הבאים:

    • 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 הוא התבנית המסווגת של כתובת האתר של בקשת הרשת

כל אירוע ביצוע מכיל תכונות של האירוע (כגון המדינה והספק של מכשיר הלקוח), כמו גם מידע ספציפי לאירוע:

  • מעקבי משך, מדדי מעקב ועקבות מסך מכילים trace_info
  • מדדי מעקב מכילים trace_info.metric_info
  • עקבות מסך מכילות trace_info.screen_info
  • מעקבי רשת מכילים network_info

סכימת נתונים מפורטת

שם שדה סוּג תיאור
event_timestamp חותמת זמן חותמת זמן מאז התקופה שבה האירוע התחיל במכשיר הלקוח (התחלת מעקב, התחלת רשת וכו')
app_display_version חוּט גרסת תצוגה של האפליקציה (לדוגמה, "4.1.7")
  • עבור אנדרואיד - VersionName
  • עבור iOS - CFBundleShortVersionString
app_build_version חוּט גרסת בנייה של האפליקציה (לדוגמה, "1523456")
  • עבור אנדרואיד - VersionCode
  • עבור iOS - CFBundleVersion
os_version חוּט גרסת מערכת ההפעלה של מכשיר הלקוח
  • עבור אנדרואיד - רמת API של אנדרואיד (לדוגמה "26")
  • עבור iOS - גרסת iOS (לדוגמה "11.4")
שם התקן חוּט שם מכשיר הלקוח (לדוגמה, "Google Pixel")
מדינה חוּט קוד מדינה בן שתי אותיות של המדינה שממנה התרחש האירוע (לדוגמה, "ארה"ב" או "ZZ" עבור מדינה לא ידועה)
מוֹבִיל חוּט ספק של מכשיר הלקוח
רדיו_סוג חוּט סוג רדיו פעיל כשהאירוע התרחש (לדוגמה, "WIFI")
מאפיינים_מותאם אישית מערך<RECORD> כל המאפיינים המותאמים אישית המצורפים לאירוע זה
custom_attributes.key חוּט מפתח המאפיין המותאם אישית
custom_attributes.value חוּט ערך המאפיין המותאם אישית
סוג אירוע חוּט סוג האירוע; ערכים אפשריים:
  • DURATION_TRACE — עקבות האוספות, כברירת מחדל, את המדד של "משך זמן", הכוללים את התחלת האפליקציה, האפליקציה בחזית ואפליקציה ברקע, כמו גם כל מעקב אחר קוד מותאם אישית המבוסס על מפתחים
  • SCREEN_TRACE - עקבות המשתרעות על כל חיי המסך (עקבות עיבוד מסך)
  • TRACE_METRIC - מדדים מותאמים אישית המשויכים למעקבי קוד מותאם אישית המבוססים על מפתח
  • NETWORK_REQUEST - עקבות המשתרעים על פני כל החיים של בקשת רשת (עקבות בקשת רשת HTTP)
שם אירוע חוּט שם האירוע
  • למשך DURATION_TRACE - שם מעקב
  • עבור TRACE_METRIC - שם מדד מותאם אישית
  • עבור SCREEN_TRACE_st_ ואחריו שם המעקב
  • עבור NETWORK_REQUEST - דפוס כתובת אתר של בקשת רשת
parent_trace_name חוּט שם מעקב האב הנושא את מדד המעקב
קיים רק עבור TRACE_METRIC
trace_info תקליט נוכח רק למשך DURATION_TRACE , SCREEN_TRACE ו- TRACE_METRIC
trace_info.duration_us int64
  • במשך DURATION_TRACE ו- SCREEN_TRACE - משך הזמן ("משך") מתחילתו ועד סופו של המעקב
  • עבור TRACE_METRIC - משך הזמן ("משך") מתחילתו ועד סופו של מעקב האב
יחידה: מיקרו שנייה
trace_info.screen_info תקליט קיים רק עבור SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio לצוף64 יחס של פריימים איטיים עבור מעקב מסך זה, בין 0 ל-1 (לדוגמה, ערך של 0.05 פירושו ש-5% מהפריימים עבור מופע מסך זה לקח יותר מ-16ms לעיבוד)
trace_info.screen_info.frozen_frame_ratio לצוף64 יחס של פריימים קפואים עבור מעקב מסך זה, בין 0 ל-1 (לדוגמה, ערך של 0.05 פירושו ש-5% מהפריימים עבור מופע מסך זה לקח יותר מ-700 אלפיות השנייה לעיבוד)
trace_info.metric_info תקליט קיים רק עבור TRACE_METRIC
trace_info.metric_info.metric_value int64 ערך מדד העקבות
רשת_מידע תקליט קיים רק עבור NETWORK_REQUEST
network_info.response_code int64 קוד תגובת HTTP עבור תגובת הרשת (לדוגמה, 200, 404)
network_info.response_mime_type חוּט סוג MIME של תגובת הרשת (לדוגמה, "טקסט/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 מול נתוני ניטור הביצועים המיוצאים שלך.

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

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;

בדוק את היחס בין מסגרות קפואות מול תנאים שונים

לדוגמה, אתה יכול לבדוק את היחס בין פריימים קפואים לצד משך הזמן שהמשתמשים מבלים בכל מסך של האפליקציה שלך כאשר הם נמצאים בסוגי רדיו שונים (WiFi, 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;

קח את נתוני ניטור הביצועים שלך לכל מקום

לפעמים אתה רוצה לגשת לשרת נתוני ניטור הביצועים שלך או לדחוף אותו לפתרון אחר של צד שלישי. כרגע אין תשלום עבור ייצוא נתונים.

אתה יכול לייצא את הנתונים שלך על ידי:

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

  • הפעלת פקודת CLI bq extract

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

תמחור

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