تصدير بيانات "مراقبة الأداء" إلى 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، ألغِ ربط مشروعك في وحدة تحكّم 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: مستوى واجهة برمجة التطبيقات (مثل "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;

التحقّق من نسبة اللقطات المتوقّفة في حالات مختلفة

على سبيل المثال، يمكنك التحقّق من نسبة اللقطات المتوقّفة إلى جانب مقدار الوقت الذي يقضيه المستخدمون على كل شاشة من شاشات تطبيقك عند استخدام أنواع مختلفة من الشبكات اللاسلكية (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;

نقل بيانات Performance Monitoring لاستخدامها في أي مكان

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

يمكنك تصدير بياناتك باتّباع الخطوات التالية:

  • استخدام واجهة مستخدم الويب BigQuery

  • تنفيذ أمر واجهة سطر الأوامر bq extract

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

الأسعار

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