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

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

BigQuery এক্সপোর্ট সক্ষম করুন

  1. Firebase কনসোলের Integrations পৃষ্ঠায় যান, তারপর BigQuery কার্ডে থাকা Link- এ ক্লিক করুন।

  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 থাকে

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

ক্ষেত্রের নাম প্রকার বর্ণনা
ইভেন্টের সময়স্ট্যাম্প টাইমস্ট্যাম্প ক্লায়েন্ট ডিভাইসে ইভেন্ট শুরু হওয়ার সময়কার (ট্রেস শুরু, নেটওয়ার্ক শুরু, ইত্যাদি) ইপক থেকে টাইমস্ট্যাম্প।
অ্যাপ_ডিসপ্লে_সংস্করণ স্ট্রিং অ্যাপ্লিকেশনটির সংস্করণ প্রদর্শন করুন (উদাহরণস্বরূপ, "4.1.7")
  • অ্যান্ড্রয়েডের জন্য — VersionName
  • iOS এর জন্য — CFBundleShortVersionString
অ্যাপ_বিল্ড_সংস্করণ স্ট্রিং অ্যাপ্লিকেশনটির বিল্ড সংস্করণ (উদাহরণস্বরূপ, "1523456")
  • অ্যান্ড্রয়েডের জন্য — VersionCode
  • iOS এর জন্য — CFBundleVersion
ওএস_সংস্করণ স্ট্রিং ক্লায়েন্ট ডিভাইসের ওএস সংস্করণ
  • অ্যান্ড্রয়েডের জন্য — অ্যান্ড্রয়েড এপিআই লেভেল (উদাহরণস্বরূপ "26")
  • iOS-এর জন্য — iOS সংস্করণ (উদাহরণস্বরূপ "11.4")
ডিভাইসের নাম স্ট্রিং ক্লায়েন্ট ডিভাইসের নাম (উদাহরণস্বরূপ, "গুগল পিক্সেল")
দেশ স্ট্রিং যে দেশে ঘটনাটি ঘটেছে, সেই দেশের দুই অক্ষরের কোড (উদাহরণস্বরূপ, "US", অথবা অজানা দেশের জন্য "ZZ")।
বাহক স্ট্রিং ক্লায়েন্ট ডিভাইসের বাহক
রেডিও_টাইপ স্ট্রিং ইভেন্টটি ঘটার সময় সক্রিয় রেডিও টাইপ (উদাহরণস্বরূপ, "ওয়াইফাই")
কাস্টম_অ্যাট্রিবিউটস অ্যারে<রেকর্ড> এই ইভেন্টের সাথে সংযুক্ত সমস্ত কাস্টম অ্যাট্রিবিউট
কাস্টম_অ্যাট্রিবিউটস.কী স্ট্রিং কাস্টম অ্যাট্রিবিউটের চাবি
কাস্টম_অ্যাট্রিবিউটস.ভ্যালু স্ট্রিং কাস্টম অ্যাট্রিবিউটের মান
ইভেন্টের ধরণ স্ট্রিং ঘটনার ধরণ; সম্ভাব্য মানসমূহ:
  • DURATION_TRACE — যে ট্রেসগুলো ডিফল্টরূপে 'duration' মেট্রিকটি সংগ্রহ করে, যার মধ্যে অ্যাপ স্টার্ট, অ্যাপ-ইন-ফোরগ্রাউন্ড, এবং অ্যাপ-ইন-ব্যাকগ্রাউন্ড অবস্থার পাশাপাশি ডেভেলপার দ্বারা ইনস্ট্রুমেন্টেড যেকোনো কাস্টম কোড ট্রেসও অন্তর্ভুক্ত থাকে।
  • SCREEN_TRACE — একটি স্ক্রিনের জীবনকাল জুড়ে থাকা ট্রেস (স্ক্রিন রেন্ডারিং ট্রেস)
  • TRACE_METRIC — ডেভেলপার-ইনস্ট্রুমেন্টেড কাস্টম কোড ট্রেসের সাথে যুক্ত কাস্টম মেট্রিকসমূহ
  • NETWORK_REQUEST — একটি নেটওয়ার্ক অনুরোধের জীবনকাল জুড়ে থাকা ট্রেস (HTTP নেটওয়ার্ক অনুরোধ ট্রেস)
ইভেন্টের নাম স্ট্রিং অনুষ্ঠানের নাম
  • DURATION_TRACE জন্য — ট্রেসের নাম
  • TRACE_METRIC জন্য — কাস্টম মেট্রিকের নাম
  • SCREEN_TRACE জন্য — _st_ এর পরে ট্রেসের নামটি লিখতে হবে।
  • NETWORK_REQUEST এর জন্য — নেটওয়ার্ক অনুরোধ ইউআরএল প্যাটার্ন
প্যারেন্ট_ট্রেস_নাম স্ট্রিং মূল ট্রেসের নাম যা ট্রেস মেট্রিক বহন করে
শুধুমাত্র TRACE_METRIC জন্য উপস্থিত
ট্রেস_ইনফো রেকর্ড শুধুমাত্র DURATION_TRACE , SCREEN_TRACE এবং TRACE_METRIC জন্য উপস্থিত।
trace_info.duration_us int64
  • DURATION_TRACE এবং SCREEN_TRACE ক্ষেত্রে — ট্রেসের শুরু থেকে শেষ পর্যন্ত সময়কাল ("duration")।
  • TRACE_METRIC জন্য — মূল ট্রেসের শুরু থেকে শেষ পর্যন্ত সময়কাল ("duration")।
একক: মাইক্রোসেকেন্ড
trace_info.screen_info রেকর্ড শুধুমাত্র SCREEN_TRACE জন্য উপস্থিত
trace_info.screen_info.slow_frame_ratio ফ্লোট৬৪ এই স্ক্রিন ট্রেসের জন্য ধীরগতির ফ্রেমের অনুপাত, যার মান ০ থেকে ১-এর মধ্যে (উদাহরণস্বরূপ, ০.০৫ মানের অর্থ হলো এই স্ক্রিন ইনস্ট্যান্সের ৫% ফ্রেম রেন্ডার হতে ১৬ মিলিসেকেন্ডের বেশি সময় নিয়েছে)।
trace_info.screen_info.frozen_frame_ratio ফ্লোট৬৪ এই স্ক্রিন ট্রেসের জন্য স্থির হয়ে থাকা ফ্রেমের অনুপাত, যার মান ০ থেকে ১-এর মধ্যে (উদাহরণস্বরূপ, ০.০৫ মানের অর্থ হলো এই স্ক্রিন ইনস্ট্যান্সের ৫% ফ্রেম রেন্ডার হতে ৭০০ মিলিসেকেন্ডের বেশি সময় নিয়েছে)।
ট্রেস_ইনফো.মেট্রিক_ইনফো রেকর্ড শুধুমাত্র TRACE_METRIC জন্য উপস্থিত
ট্রেস_ইনফো.মেট্রিক_ইনফো.মেট্রিক_ভ্যালু int64 ট্রেস মেট্রিকের মান
নেটওয়ার্ক_তথ্য রেকর্ড শুধুমাত্র NETWORK_REQUEST এর জন্য উপস্থিত
নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_কোড int64 নেটওয়ার্ক প্রতিক্রিয়ার জন্য HTTP প্রতিক্রিয়া কোড (উদাহরণস্বরূপ, 200, 404)
নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_মাইম_টাইপ স্ট্রিং নেটওয়ার্ক প্রতিক্রিয়ার MIME টাইপ (উদাহরণস্বরূপ, "text/html")
নেটওয়ার্ক_ইনফো.রিকোয়েস্ট_এইচটিটিপি_মেথড স্ট্রিং নেটওয়ার্ক অনুরোধের HTTP পদ্ধতি (উদাহরণস্বরূপ, "GET" বা "POST")
নেটওয়ার্ক_তথ্য.অনুরোধ_পেলোড_বাইট int64 নেটওয়ার্ক অনুরোধ পেলোডের আকার
একক: বাইট
নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_পেলোড_বাইট int64 নেটওয়ার্ক প্রতিক্রিয়া পেলোডের আকার
একক: বাইট
network_info.request_completed_time_us int64 event_timestamp কয়েক মাইক্রোসেকেন্ড পরে যখন নেটওয়ার্ক অনুরোধ পাঠানো সম্পূর্ণ হয়
একক: মাইক্রোসেকেন্ড
নেটওয়ার্ক_তথ্য.প্রতিক্রিয়া_শুরু_করার_সময়_ইউএস int64 event_timestamp কয়েক মাইক্রোসেকেন্ড পরে যখন নেটওয়ার্ক প্রতিক্রিয়া শুরু হয়
একক: মাইক্রোসেকেন্ড
network_info.response_completed_time_us int64 event_timestamp কয়েক মাইক্রোসেকেন্ড পরে যখন নেটওয়ার্ক প্রতিক্রিয়া সম্পন্ন হয়
একক: মাইক্রোসেকেন্ড

রপ্তানি করা ডেটা দিয়ে আপনি কী করতে পারেন?

নিম্নলিখিত বিভাগগুলিতে এমন কিছু কোয়েরির উদাহরণ দেওয়া হয়েছে যা আপনি আপনার এক্সপোর্ট করা Performance Monitoring ডেটার উপর BigQuery তে চালাতে পারেন।

কনসোলে প্রদর্শিত ডেটার সাথে মেলান।

ফায়ারবেস ড্যাশবোর্ড দৈনিক ডেটা 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;

বিভিন্ন অবস্থার সাপেক্ষে স্থির ফ্রেমের অনুপাত যাচাই করুন।

উদাহরণস্বরূপ, আপনি বিভিন্ন রেডিও টাইপে (ওয়াইফাই, ৪জি, ইত্যাদি) থাকাকালীন ব্যবহারকারীরা আপনার অ্যাপের প্রতিটি স্ক্রিনে কতক্ষণ সময় ব্যয় করছেন, তার পাশাপাশি ফ্রোজেন ফ্রেমের অনুপাতও পরীক্ষা করতে পারেন।

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 চালানো হচ্ছে

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

মূল্য নির্ধারণ

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