داده های نظارت بر عملکرد را به BigQuery صادر کنید

برای تجزیه و تحلیل بیشتر می توانید داده های Performance Monitoring از برنامه های اپل و اندروید به BigQuery صادر کنید. BigQuery به شما امکان می دهد داده ها را با استفاده از BigQuery SQL تجزیه و تحلیل کنید، آن را به یک ارائه دهنده ابر دیگر صادر کنید، و حتی از داده ها برای مدل های ML سفارشی خود استفاده کنید.

صادرات BigQuery را فعال کنید

  1. به صفحه Integrations در کنسول 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")
  • برای اندروید — VersionName
  • برای iOS - CFBundleShortVersionString
app_build_version رشته نسخه ساخت برنامه (به عنوان مثال، "1523456")
  • برای اندروید - VersionCode
  • برای iOS - CFBundleVersion
os_version رشته نسخه سیستم عامل دستگاه مشتری
  • برای Android - سطح API Android (به عنوان مثال "26")
  • برای iOS - نسخه iOS (به عنوان مثال "11.4")
نام_دستگاه رشته نام دستگاه مشتری (به عنوان مثال، "Google Pixel")
کشور رشته کد کشور دو حرفی کشوری که رویداد از آنجا رخ داده است (به عنوان مثال، "US"، یا "ZZ" برای کشور ناشناخته)
حامل رشته حامل دستگاه مشتری
نوع_رادیویی رشته نوع رادیوی فعال هنگام وقوع رویداد (به عنوان مثال، "WIFI")
صفات_سفارشی ARRAY<RECORD> همه ویژگی‌های سفارشی متصل به این رویداد
custom_attributes.key رشته کلید ویژگی سفارشی
custom_attributes.value رشته مقدار ویژگی سفارشی
رویداد_نوع رشته نوع رویداد؛ مقادیر ممکن:
  • DURATION_TRACE - ردیابی‌هایی که به‌طور پیش‌فرض، معیار «مدت» را جمع‌آوری می‌کنند، که شامل شروع برنامه، برنامه در پیش‌زمینه، و برنامه در پس‌زمینه، و همچنین هر ردیابی کد سفارشی با ابزار توسعه‌دهنده است.
  • SCREEN_TRACE - ردپایی که طول عمر یک صفحه را در بر می گیرد (ردیابی نمایش صفحه)
  • TRACE_METRIC - معیارهای سفارشی که با ردیابی کد سفارشی با ابزار توسعه دهنده مرتبط است
  • NETWORK_REQUEST - ردیابی هایی که طول عمر درخواست شبکه را در بر می گیرد (ردیابی درخواست شبکه HTTP)
رویداد_نام رشته نام رویداد
  • برای 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 به عنوان منطقه زمانی تنظیم کنند، در غیر این صورت تابع تاریخ به طور پیش فرض از 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;

نسبت فریم های یخ زده را در برابر شرایط مختلف بررسی کنید

به عنوان مثال، می‌توانید نسبت فریم‌های ثابت را در کنار مدت زمانی که کاربران در هر صفحه از برنامه‌تان صرف می‌کنند، هنگام استفاده از انواع مختلف رادیو (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

  • اجرای دستور CLI bq extract

  • ارسال یک کار استخراج از طریق API یا کتابخانه های مشتری.

قیمت گذاری

هیچ هزینه ای برای صادرات داده از Performance Monitoring دریافت نمی شود، و BigQuery محدودیت های سخاوتمندانه استفاده بدون هزینه را ارائه می دهد. برای اطلاعات دقیق، به قیمت گذاری BigQuery یا جعبه ایمنی BigQuery مراجعه کنید.