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

Performance MonitoringBigQuery

يمكنك تصدير بيانات 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 Console.

ما هي البيانات التي يتم تصديرها إلى 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 timestamp الطابع الزمني منذ بداية الحقبة عندما بدأ الحدث على جهاز العميل (بدء عملية التتبُّع، وبدء الشبكة، وما إلى ذلك)
app_display_version string الإصدار المعروض من التطبيق (على سبيل المثال، "4.1.7")
  • بالنسبة إلى Android: ‏VersionName
  • بالنسبة إلى iOS: ‏CFBundleShortVersionString
app_build_version string إصدار تصميم التطبيق (على سبيل المثال، "1523456")
  • بالنسبة إلى Android: ‏VersionCode
  • بالنسبة إلى iOS: ‏CFBundleVersion
os_version string إصدار نظام التشغيل على جهاز العميل
  • بالنسبة إلى Android: مستوى واجهة برمجة تطبيقات Android (على سبيل المثال، "26")
  • بالنسبة إلى iOS: إصدار iOS (على سبيل المثال، "11.4")
device_name string اسم جهاز العميل (على سبيل المثال، "Google Pixel")
country string رمز البلد المؤلّف من حرفَين والذي حدث فيه الحدث وقع (على سبيل المثال، "US" أو "ZZ" لبلد غير معروف)
carrier string شركة النقل لجهاز العميل
radio_type string نوع الاتصال اللاسلكي النشط عند وقوع الحدث (على سبيل المثال، "WIFI")
custom_attributes ARRAY<RECORD> جميع السمات المخصّصة المرفقة بهذا الحدث
custom_attributes.key string مفتاح السمة المخصّصة
custom_attributes.value string قيمة السمة المخصّصة
event_type string نوع الحدث؛ القيم المحتمَلة:
  • DURATION_TRACE : عمليات التتبُّع التي تجمع، تلقائيًا، مقياس "المدة"، والذي يشمل بدء التطبيق، وعرض التطبيق في المقدّمة، وعرض التطبيق في الخلفية، بالإضافة إلى أي عمليات تتبُّع للرموز المخصّصة التي أعدّها المطوّر
  • SCREEN_TRACE : عمليات التتبُّع التي تغطي فترة عرض الشاشة (عمليات تتبُّع عرض الشاشة)
  • TRACE_METRIC : مقاييس مخصّصة مرتبطة بعمليات تتبُّع الرموز المخصّصة التي أعدّها المطوّر
  • NETWORK_REQUEST : عمليات التتبُّع التي تغطي فترة طلب الشبكة (عمليات تتبُّع طلبات شبكة HTTP)
event_name string اسم الحدث
  • بالنسبة إلى DURATION_TRACE: اسم عملية التتبُّع
  • بالنسبة إلى TRACE_METRIC: اسم المقياس المخصّص
  • بالنسبة إلى SCREEN_TRACE_st_ متبوعة باسم عملية التتبُّع
  • بالنسبة إلى NETWORK_REQUEST — نمط عنوان URL لطلب الشبكة
parent_trace_name string اسم عملية التتبُّع الرئيسية التي تتضمّن مقياس عملية التتبُّع
لا يظهر هذا الحقل إلا في TRACE_METRIC
trace_info RECORD لا يظهر هذا الحقل إلا في DURATION_TRACE و SCREEN_TRACE وTRACE_METRIC
trace_info.duration_us int64
  • بالنسبة إلى DURATION_TRACE وSCREEN_TRACE : المدة الزمنية من بداية عملية التتبُّع إلى نهايتها
  • بالنسبة إلى TRACE_METRIC — المدة الزمنية ("duration") من بداية عملية التتبُّع الرئيسية إلى نهايتها
الوحدة: ميكروثانية
trace_info.screen_info RECORD لا يظهر هذا الحقل إلا في 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 RECORD لا يظهر هذا الحقل إلا في TRACE_METRIC
trace_info.metric_info.metric_value int64 قيمة مقياس عملية التتبُّع
network_info RECORD لا يظهر هذا الحقل إلا في NETWORK_REQUEST
network_info.response_code int64 رمز استجابة HTTP لاستجابة الشبكة (على سبيل المثال، 200، 404)
network_info.response_mime_type string نوع MIME لاستجابة الشبكة (على سبيل المثال، "text/html")
network_info.request_http_method string طريقة 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 Sandbox.