تصدير بيانات "مراقبة الأداء" إلى 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" للبلد غير المعروف)
شركة النقل السلسلة مشغّل شبكة الجوّال لجهاز العميل
نوع_الراديو السلسلة نوع الشبكة اللاسلكية النشطة عند وقوع الحدث (مثل "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 لطلب الشبكة
اسم_الوالدة السلسلة اسم التتبُّع الرئيسي الذي يحمل مقياس التتبُّع
لا يظهر إلا في 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 الوضع التجريبي.