BigQuery-তে পারফর্ম্যান্স মনিটরিং ডেটা এক্সপোর্ট করুন

আপনি Apple ও Android অ্যাপ থেকে Performance Monitoring ডেটা BigQuery-এ এক্সপোর্ট করতে পারবেন, যাতে আরও বিশ্লেষণ করা যায়। BigQuery আপনাকে SQL ব্যবহার করে ডেটা বিশ্লেষণ করতে, অন্য ক্লাউড পরিষেবা প্রদানকারীর কাছে এক্সপোর্ট করতে এবং এমনকি আপনার কাস্টম ML মডেলের জন্য ডেটা ব্যবহার করতে দেয়।BigQuery

BigQuery এক্সপোর্ট চালু করুন

  1. Firebase কনসোলের ইন্টিগ্রেশন পৃষ্ঠায় যান, তারপর BigQuery কার্ডে লিঙ্ক করুন বিকল্পে ক্লিক করুন।

  2. BigQuery চালু করতে অন-স্ক্রিন নির্দেশাবলী অনুসরণ করুন।

    Performance Monitoring-এর জন্য BigQuery এক্সপোর্ট চালু করলে, নিম্নলিখিত ঘটনা ঘটে:

    • Firebase আপনার আগে থেকে থাকা ডেটার একটি কপি BigQuery-এ এক্সপোর্ট করে। এক্সপোর্ট করার জন্য ডেটার প্রাথমিক প্রচার সম্পূর্ণ হতে ৪৮ ঘণ্টা পর্যন্ত সময় লাগতে পারে।

    • ডেটাসেট তৈরি করার পরে, লোকেশন পরিবর্তন করা যাবে না, তবে আপনি অন্য লোকেশনে ডেটাসেট কপি করতে অথবা অন্য লোকেশনে ম্যানুয়ালি ডেটাসেট সরাতে (আবার তৈরি করতে) পারবেন। আরও জানতে, ডেটাসেটের লোকেশন পরিবর্তন করুন বিকল্প দেখুন।

    • Firebase আপনার Firebase প্রোজেক্ট থেকে 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 আছে

বিস্তারিত ডেটা স্কিমা

ফিল্ডের নাম Type বিবরণ
event_timestamp টাইমস্ট্যাম্প ক্লায়েন্ট ডিভাইসে ইভেন্ট শুরু হওয়ার সময় থেকে Epoch-এর টাইমস্ট্যাম্প (ট্রেস শুরু, নেটওয়ার্ক শুরু ইত্যাদি)
app_display_version স্ট্রিং অ্যাপ্লিকেশনের ডিসপ্লে ভার্সন (যেমন, "4.1.7")
  • Android-এর জন্য — VersionName
  • iOS-এর জন্য — CFBundleShortVersionString
app_build_version স্ট্রিং অ্যাপ্লিকেশনের বিল্ড ভার্সন (যেমন, "১৫২৩৪৫৬")
  • Android-এর জন্য — VersionCode
  • iOS-এর জন্য — CFBundleVersion
os_version স্ট্রিং ক্লায়েন্ট ডিভাইসের OS ভার্সন
  • Android-এর জন্য — Android API লেভেল (যেমন "২৬")
  • iOS-এর জন্য — iOS ভার্সন (যেমন "11.4")
device_name স্ট্রিং ক্লায়েন্ট ডিভাইসের নাম (যেমন, "Google Pixel")
দেশ স্ট্রিং যে দেশে ইভেন্টটি ঘটেছে সেই দেশের দুই-অক্ষরের কোড (যেমন, "US" বা অজানা দেশের জন্য "ZZ")
পরিষেবা প্রদানকারী স্ট্রিং ক্লায়েন্ট ডিভাইসের ক্যারিয়ার
radio_type স্ট্রিং ইভেন্টটি ঘটার সময় অ্যাক্টিভ রেডিওর ধরন (যেমন, "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 প্যাটার্ন
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 এই স্ক্রিন ট্রেসের জন্য স্লো ফ্রেমের অনুপাত, ০ থেকে ১-এর মধ্যে (যেমন, ০.০৫ মানের অর্থ হল এই স্ক্রিন ইনস্ট্যান্সের জন্য ৫% ফ্রেম রেন্ডার করতে ১৬ মিলিসেকেন্ডের বেশি সময় লেগেছে)
trace_info.screen_info.frozen_frame_ratio float64 এই স্ক্রিন ট্রেসের জন্য ফ্রোজেন ফ্রেমের অনুপাত, ০ থেকে ১-এর মধ্যে (যেমন, ০.০৫ মানের অর্থ হল এই স্ক্রিন ইনস্ট্যান্সের জন্য ৫% ফ্রেম রেন্ডার করতে ৭০০ মিলিসেকেন্ডের বেশি সময় লেগেছে)
trace_info.metric_info রেকর্ড শুধুমাত্র TRACE_METRIC-এর জন্য উপলভ্য
trace_info.metric_info.metric_value int64 ট্রেস মেট্রিকের ভ্যালু
network_info রেকর্ড শুধুমাত্র NETWORK_REQUEST-এর জন্য উপলভ্য
network_info.response_code int64 নেটওয়ার্ক রেসপন্সের জন্য HTTP রেসপন্স কোড (যেমন, ২০০, ৪০৪)
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;

বিভিন্ন পরিস্থিতির সাপেক্ষে ফ্রোজেন ফ্রেমের অনুপাত চেক করুন

যেমন, বিভিন্ন রেডিও টাইপ (ওয়াই-ফাই, 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 নামের একটি কাস্টম অ্যাট্রিবিউট এবং cache-hit নামের একটি কাস্টম মেট্রিক (একটি TRACE_METRIC) রয়েছে। এই মেট্রিকটি ক্যাশে হিট হলে 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 ওয়েব UI ব্যবহার করা

  • CLI কমান্ড রান করা bq extract

  • API বা ক্লায়েন্ট লাইব্রেরির মাধ্যমে এক্সট্র্যাক্ট জব জমা দেওয়া।

মূল্য

Performance Monitoring থেকে ডেটা এক্সপোর্ট করার জন্য কোনও চার্জ লাগে না এবং BigQuery কোনও খরচ ছাড়াই ব্যবহারের জন্য যথেষ্ট সীমা প্রদান করে। বিস্তারিত তথ্যের জন্য, BigQuery-এর দাম অথবা BigQuery স্যান্ডবক্স দেখুন।