تصدير بيانات "مراقبة الأداء" إلى BigQuery

يمكنك تصدير بيانات Performance Monitoring من تطبيقات Apple وAndroid إلى BigQuery لإجراء المزيد من التحليلات. تتيح لك BigQuery تحليل البيانات باستخدام BigQuery SQL وتصديرها إلى مقدّم خدمة سحابية آخر، ويمكنك حتى استخدام البيانات لنماذج تعلُّم الآلة المخصّصة.

تفعيل تصدير BigQuery

  1. انتقِل إلى صفحة عمليات الدمج في وحدة تحكّم Firebase، ثم انقر على ربط في بطاقة BigQuery.

  2. اتّبِع التعليمات الظاهرة على الشاشة لتفعيل BigQuery.

    عند تفعيل خيار تصدير BigQuery لنطاق Performance Monitoring، يحدث ما يلي:

    • يُصدِّر Firebase نسخة من بياناتك الحالية إلى BigQuery. قد يستغرق نشر البيانات الأوّلي للتصدير مدة تصل إلى 48 ساعة.

    • بعد إنشاء مجموعة البيانات، لا يمكن تغيير الموقع الجغرافي، ولكن يمكنك نسخ مجموعة البيانات إلى موقع جغرافي آخر أو نقلها (إعادة إنشائها) يدويًا في موقع جغرافي آخر. لمزيد من المعلومات، يُرجى الاطّلاع على تغيير موقع مجموعة البيانات.

    • يُعدّ Firebase عمليات مزامنة منتظمة لبياناتك من مشروعك على Firebase إلى BigQuery. عادةً ما تنتهي عمليات التصدير اليومية هذه في غضون 24 ساعة من تحديد موعدها.

    • يتم تلقائيًا ربط جميع التطبيقات في مشروعك بـ BigQuery. ويتم تلقائيًا ربط أي تطبيقات تضيفها إلى المشروع لاحقًا بـ 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 سلسلة إصدار البنية للتطبيق (على سبيل المثال، "1523456")
  • على Android — VersionCode
  • على أجهزة iOS — CFBundleVersion
os_version سلسلة إصدار نظام التشغيل على الجهاز العميل
  • في نظام التشغيل Android، مستوى واجهة برمجة التطبيقات لنظام التشغيل Android (على سبيل المثال "26")
  • بالنسبة إلى نظام التشغيل iOS، يجب إدخال إصدار iOS (مثل "11.4")
device_name سلسلة اسم جهاز العميل (على سبيل المثال، "Google Pixel")
بلد سلسلة رمز البلد المؤلّف من حرفين والذي وقع فيه الحدث (على سبيل المثال، "US" أو "ZZ" لبلد غير معروف)
شركة النقل سلسلة مشغّل شبكة الجوّال لجهاز العميل
radio_type سلسلة نوع الراديو النشط عند وقوع الحدث (مثل "WIFI")
custom_attributes 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 لطلب الشبكة كما يلي:
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 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 حجم حمولة طلب الشبكة
الوحدة: بايت
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 كمنطقة زمنية، وإلا سيتم تلقائيًا استخدام التوقيت العالمي المتفق عليه.

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 وشبكة الجيل الرابع وما إلى ذلك).

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

  • إرسال مهمة استخراج من خلال واجهة برمجة التطبيقات أو مكتبات البرامج

الأسعار

لا يتم تحصيل أي رسوم مقابل تصدير البيانات من Performance Monitoring، كما يوفّر BigQuery حدودًا سخية للاستخدام بدون تكلفة. للحصول على معلومات مفصّلة، يُرجى الرجوع إلى أسعار BigQuery أو بيئة الاختبار BigQuery.