شما میتوانید دادههای Performance Monitoring از برنامههای اپل و اندروید برای تجزیه و تحلیل بیشتر به BigQuery منتقل کنید. BigQuery به شما امکان میدهد دادهها را با استفاده از BigQuery SQL تجزیه و تحلیل کنید، آنها را به یک ارائه دهنده ابری دیگر منتقل کنید و حتی از دادهها برای مدلهای ML سفارشی خود استفاده کنید.
فعال کردن خروجی BigQuery
به صفحه Integrations در کنسول Firebase بروید، سپس در کارت BigQuery روی Link کلیک کنید.
برای فعال کردن BigQuery دستورالعملهای روی صفحه را دنبال کنید.
وقتی BigQuery export for Performance Monitoring را فعال میکنید، موارد زیر رخ میدهد:
فایربیس یک کپی از دادههای موجود شما را به BigQuery صادر میکند. تکمیل انتشار اولیه دادهها برای صادرات ممکن است تا ۴۸ ساعت طول بکشد.
- شما میتوانید به صورت دستی، زمانبندیهای مربوط به پر کردن دادهها را تا 30 روز گذشته یا برای جدیدترین تاریخی که قابلیت خروجی BigQuery را فعال کردهاید (هر کدام که جدیدتر باشد) برنامهریزی کنید.
پس از ایجاد مجموعه دادهها، مکان را نمیتوان تغییر داد، اما میتوانید مجموعه دادهها را به مکان دیگری کپی کنید یا به صورت دستی مجموعه دادهها را به مکان دیگری منتقل (بازسازی) کنید. برای کسب اطلاعات بیشتر، به تغییر مکان مجموعه دادهها مراجعه کنید.
فایربیس همگامسازیهای منظمی از دادههای شما از پروژه فایربیس به BigQuery انجام میدهد. این عملیات خروجی روزانه معمولاً ظرف ۲۴ ساعت پس از زمانبندی به پایان میرسد.
به طور پیشفرض، تمام برنامههای موجود در پروژه شما به BigQuery متصل هستند. هر برنامهای که بعداً به پروژه اضافه کنید، به طور خودکار به BigQuery متصل میشود. میتوانید مدیریت کنید که کدام برنامهها داده ارسال کنند .
برای غیرفعال کردن خروجی BigQuery ، پروژه خود را در کنسول Firebase از حالت لینک خارج کنید.
چه دادههایی به BigQuery ارسال میشوند؟
برای هر برنامه در پروژه، خروجی، جدولی ایجاد میکند که شامل تمام رویدادهای عملکردی ثبتشده است. هر ردیف در جدول، یک رویداد عملکردی واحد است که میتواند یکی از موارد زیر باشد:
ردیابی مدت زمان - ردیابیهایی که به طور پیشفرض، معیار «مدت زمان» را جمعآوری میکنند، که شامل شروع برنامه، برنامه در پیشزمینه و برنامه در پسزمینه و همچنین هرگونه ردیابی کد سفارشی ابزارگذاری شده توسط توسعهدهنده میشود.
-
event_typeDURATION_TRACEاست. -
event_nameهمان نام ردیابی است
-
معیار ردیابی - معیارهای سفارشی که با ردیابی کدهای سفارشیِ ابزاربندیشده توسط توسعهدهنده مرتبط هستند
-
event_typeTRACE_METRICاست -
event_nameنام معیار است -
parent_trace_nameنام ردیابی است که شامل این معیار است.
-
ردیابی صفحه نمایش - ردیابیهایی که در طول عمر یک صفحه نمایش انجام میشوند (ردیابیهای رندر صفحه نمایش)
-
event_typeSCREEN_TRACEاست -
event_nameپیشوند_st_به علاوهی نام واقعی صفحه نمایش است.
-
درخواست شبکه - ردیابیهایی که طول عمر یک درخواست شبکه را در بر میگیرد (ردیابیهای درخواست شبکه HTTP)
-
event_typeNETWORK_REQUESTاست. -
event_nameالگوی دستهبندیشدهی URL درخواست شبکه است.
-
هر رویداد اجرایی شامل ویژگیهای آن رویداد (مانند کشور و اپراتور دستگاه کلاینت) و همچنین اطلاعات خاص رویداد است:
- ردیابیهای مدت زمان، معیارهای ردیابی و ردیابیهای صفحه نمایش حاوی
trace_infoهستند - معیارهای ردیابی شامل
trace_info.metric_infoهستند. - ردپاهای صفحه نمایش شامل
trace_info.screen_infoهستند. - ردپاهای شبکه حاوی
network_infoهستند
طرحواره داده تفصیلی
| نام فیلد | نوع | توضیحات |
|---|---|---|
| event_timestamp | مهر زمانی | مهر زمانی از زمان شروع رویداد در دستگاه کلاینت (شروع ردیابی، شروع شبکه و غیره) |
| نسخه_نمایش_برنامه | رشته | نمایش نسخه برنامه (برای مثال، "4.1.7")
|
| نسخه_ساخت_برنامه | رشته | نسخه ساخت برنامه (برای مثال، "1523456")
|
| نسخه سیستم عامل | رشته | نسخه سیستم عامل دستگاه کلاینت
|
| نام دستگاه | رشته | نام دستگاه کلاینت (برای مثال، "Google Pixel") |
| کشور | رشته | کد دو حرفی کشوری که رویداد در آن رخ داده است (برای مثال، "US" یا "ZZ" برای کشور نامشخص) |
| حامل | رشته | حامل دستگاه کلاینت |
| رادیو_تایپ | رشته | نوع رادیوی فعال هنگام وقوع رویداد (برای مثال، "WIFI") |
| ویژگیهای_سفارشی | آرایه <رکورد> | تمام ویژگیهای سفارشی متصل به این رویداد |
| کلید_ویژگیهای_سفارشی | رشته | کلید ویژگی سفارشی |
| مقدار custom_attributes | رشته | مقدار ویژگی سفارشی |
| نوع_رویداد | رشته | نوع رویداد؛ مقادیر ممکن:
|
| نام_رویداد | رشته | نام رویداد
|
| نام_ردیابی_والد | رشته | نام مسیر والد که معیار مسیر را حمل میکند فقط برای TRACE_METRIC ارائه میشود |
| ردیابی_اطلاعات | رکورد | فقط برای DURATION_TRACE ، SCREEN_TRACE و TRACE_METRIC وجود دارد |
| trace_info.duration_us | int64 |
|
| trace_info.screen_info | رکورد | فقط برای SCREEN_TRACE ارائه میشود |
| trace_info.screen_info.slow_frame_ratio | شناور64 | نسبت فریمهای کند برای این ردیابی صفحه، بین ۰ و ۱ (برای مثال، مقدار ۰.۰۵ به این معنی است که ۵٪ از فریمها برای این نمونه صفحه نمایش بیش از ۱۶ میلیثانیه برای رندر شدن زمان بردهاند) |
| trace_info.screen_info.frozen_frame_ratio | شناور64 | نسبت فریمهای ثابت برای این ردیابی صفحه، بین ۰ و ۱ (برای مثال، مقدار ۰.۰۵ به این معنی است که ۵٪ از فریمها برای این نمونه صفحه نمایش بیش از ۷۰۰ میلیثانیه برای رندر شدن زمان بردهاند) |
| trace_info.metric_info | رکورد | فقط برای TRACE_METRIC ارائه میشود |
| trace_info.metric_info.metric_value | int64 | مقدار معیار ردیابی |
| اطلاعات شبکه | رکورد | فقط برای NETWORK_REQUEST ارائه میشود |
| کد پاسخ_اطلاعات_شبکه | int64 | کد پاسخ HTTP برای پاسخ شبکه (برای مثال، 200، 404) |
| نوع_پاسخ_mime_پاسخ_اطلاعات_شبکه | رشته | نوع MIME پاسخ شبکه (برای مثال، "text/html") |
| متد_http_درخواست_اطلاعات_شبکه | رشته | روش 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 خروجی خود اجرا کنید.
دادههای مشاهده شده در کنسول را مطابقت دهید
داشبورد فایربیس دادههای روزانه را در منطقه زمانی 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;
نسبت فریمهای یخزده را در برابر شرایط مختلف بررسی کنید
برای مثال، میتوانید نسبت فریمهای ثابت را در کنار میزان زمانی که کاربران در هر صفحه از برنامه شما هنگام استفاده از انواع مختلف امواج رادیویی (وایفای، 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 برای آن تنظیم شده است.
برای مثال، میتوانید نرخ موفقیت حافظه پنهان (cache hit rate) را برای بارگذاری فایلهای 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در محیط CLIارسال یک کار استخراج از طریق API یا کتابخانههای کلاینت.
قیمتگذاری
هیچ هزینهای برای خروجی گرفتن دادهها از Performance Monitoring وجود ندارد و BigQuery محدودیتهای استفادهی رایگان و سخاوتمندانهای ارائه میدهد. برای اطلاعات دقیق، به قیمتگذاری BigQuery یا BigQuery sandbox مراجعه کنید.