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

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

تفعيل تصدير بيانات BigQuery

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

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

    عند تفعيل ميزة تصدير بيانات "BigQuery" إلى "Performance Monitoring"، يحدث ما يلي:

لإيقاف تصدير بيانات 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 الطابع الزمني الطابع الزمني منذ Epoch عند بدء الحدث على جهاز العميل (بدء التتبّع، بدء الشبكة، وما إلى ذلك)
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 مصفوفة<سجل> جميع السمات المخصّصة المرتبطة بهذا الحدث
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 صراحةً كمنطقة زمنية، وإلا ستستخدم دالة التاريخ التوقيت العالمي المنسق (UTC) تلقائيًا.

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 و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.