মেট্রিক্স কনফিগারেশন ধারণা

মেট্রিক্স কনফিগারেশনগুলো সেই টেলিমেট্রি ক্যাম্পেইনগুলোকে সংজ্ঞায়িত করে, যা টেলিমেট্রি সার্ভিস পরিচালনা করে। একটি মেট্রিক্স কনফিগারেশন হলো একটি MetricsConfig প্রোটোকল বাফার (protobuf) মেসেজের একটি ইনস্ট্যান্স। মেট্রিক্স কনফিগারেশনগুলো নির্দিষ্ট করে দেয় কীভাবে ডেটা সংগ্রহ, প্রক্রিয়াকরণ এবং রিপোর্ট করতে হবে। OEM-রা টেলিমেট্রি সার্ভিসের API-এর মাধ্যমে মেট্রিক্স কনফিগারেশনগুলো সক্রিয় করতে পারে। একাধিক কনফিগারেশন একই সাথে চলতে পারে।

শুরু করার আগে, এসডিভি (SDV) আর্কিটেকচারের সাথে পরিচিত হয়ে নিন, যা একটি সার্ভিস-ওরিয়েন্টেড আর্কিটেকচার এবং যেখানে সার্ভিসগুলো প্রোটোবাফ মেসেজ হিসেবে ডেটা প্রকাশ করে। এই মেসেজগুলো এসডিভি কমিউনিকেশন স্ট্যাক ব্যবহার করে আরপিসি (RPC) বা পাবলিশ-সাবস্ক্রাইবের মাধ্যমে যোগাযোগ করে।

মূল পদগুলি

একটি মেট্রিক্স কনফিগারেশন ডেটা সোর্স, প্রসেসিং রুল এবং রিপোর্টিং মেকানিজম নির্ধারণের মাধ্যমে ডেটা সংগ্রহকে সমন্বয় করে। এই এজ প্রসেসিংয়ের অন্যতম প্রধান সুবিধা হলো মোবাইল ডেটার ব্যবহার হ্রাস পাওয়া। ডিভাইসে উচ্চ-ফ্রিকোয়েন্সির ডেটা প্রসেস করে এবং শুধুমাত্র অ্যাগ্রিগেট বা ইনসাইটস আপলোড করার মাধ্যমে, ক্লাউডে প্রেরিত ডেটার পরিমাণ উল্লেখযোগ্যভাবে কমানো যায়।

একটি মেট্রিক্স কনফিগারেশনের সংজ্ঞা শুরু হয় কনফিগারেশনে ব্যবহার করার জন্য ডেটা সোর্সগুলোর তালিকা তৈরির মাধ্যমে। এগুলো হলো এমন পরিষেবা যা SDV কমিউনিকেশন স্ট্যাকের মাধ্যমে ডেটা উপলব্ধ করে। যখন আপনি একটি কনফিগারেশন সক্রিয় করেন, তখন টেলিমেট্রি পরিষেবা প্রয়োজন অনুযায়ী ডেটা স্ট্রিম বা ফেচ করার জন্য এই সোর্সগুলোর সাথে সংযোগ স্থাপন করে।

একটি কনফিগারেশনের মূল ভিত্তি হলো এর এজ ডেটা প্রসেসিং ক্ষমতা, যা স্টেটফুল ডেটা অ্যাগ্রিগেটর-এর মাধ্যমে পরিচালিত হয়। প্রতিটি অ্যাগ্রিগেটর একটি মেসেজ বিল্ডার ব্যবহার করে যা একটি স্টেটফুল প্রোটো মেসেজ ইনস্ট্যান্স রক্ষণাবেক্ষণ করে। এই মেসেজের প্রতিটি ফিল্ড একটি এক্সপ্রেশন ইভ্যালুয়েট করার মাধ্যমে পূরণ করা হয়, যা নির্ধারণ করে দেয় যে অন্যান্য ডেটা সোর্স বা অ্যাগ্রিগেটর থেকে কোন ডেটা পড়তে হবে এবং সেই ডেটার উপর কোন গাণিতিক, লজিক্যাল বা অ্যাগ্রিগেশন অপারেশন প্রয়োগ করতে হবে। আপনি একটি এক্সপ্রেশনের ফলাফলের উপর অতিরিক্ত অ্যাগ্রিগেশন প্রয়োগ করতে পারেন।

এই প্রক্রিয়াটি নিয়ন্ত্রণে ট্রিগারগুলো কেন্দ্রীয় ভূমিকা পালন করে। এগুলো পর্যায়ক্রমে, নতুন ডেটার প্রতিক্রিয়ায়, অথবা ডেটা-ভিত্তিক শর্ত পূরণ হলে সক্রিয় হতে পারে। ট্রিগারগুলো নির্ধারণ করে কখন অ্যাগ্রিগেটররা তাদের মেসেজ বিল্ডার মূল্যায়ন করবে, কখন মেট্রিক্স রিপোর্ট তৈরি হবে, এবং ডেটা সংগ্রহ শুরু বা বন্ধ করার মতো কাজের মাধ্যমে কনফিগারেশন লাইফসাইকেলকেও প্রভাবিত করতে পারে।

মেট্রিক্স রিপোর্ট হলো চূড়ান্ত আউটপুট। প্রতিটি রিপোর্টে একটি মেসেজ বিল্ডার দ্বারা সংজ্ঞায়িত ডেটা পেলোডের সাথে টাইমস্ট্যাম্প এবং রিপোর্ট আইডির মতো মেটাডেটা অন্তর্ভুক্ত থাকে। আপনি কনফিগারেশন লাইফসাইকেলের নির্দিষ্ট মুহূর্তে, যেমন কোনো কনফিগারেশন সক্রিয় বা নিষ্ক্রিয় করার সময়, রিপোর্ট তৈরি করতে পারেন। তৈরি করা রিপোর্টগুলো মেমরিতে সংরক্ষিত থাকে এবং রিপোর্ট স্ট্যাটাস নোটিফিকেশন চ্যানেলের মাধ্যমে ক্লায়েন্টকে তা পুনরুদ্ধারের জন্য অবহিত করা হয়।

নিম্নলিখিত চিত্রটি একটি মেট্রিক্স কনফিগারেশনের মধ্যে উপাদানগুলি কীভাবে একে অপরের সাথে কাজ করতে পারে তার একটি ধারণামূলক উদাহরণ প্রদান করে:

একটি মেট্রিক্স কনফিগারেশনের মধ্যে ডেটা উৎস, প্রক্রিয়াকরণ এবং রিপোর্টিং চিত্রিতকারী ধারণাগত ডায়াগ্রাম।

চিত্র ১. একটি মেট্রিক্স কনফিগারেশনের মধ্যে ডেটার উৎস, প্রক্রিয়াকরণ এবং প্রতিবেদন।

মেট্রিক্স কনফিগারেশন উপাদান

আপনি ডেটা সংগ্রহের কাজ এবং জটিল অন-ডিভাইস প্রসেসিং পাইপলাইন নির্ধারণ করতে মেট্রিক্স কনফিগারেশন ব্যবহার করতে পারেন। এই বিভাগে একটি মেট্রিক্স ক্যাম্পেইন নির্ধারণ করতে ব্যবহৃত মূল উপাদানগুলির বিস্তারিত বিবরণ দেওয়া হয়েছে। উপাদানগুলি সিস্টেমে ইনপুট থেকে আউটপুট পর্যন্ত ডেটা প্রবাহের ক্রম অনুসারে উপস্থাপন করা হয়েছে। আপনি এই উপাদানগুলি যেকোনো ক্রমে নির্ধারণ করতে পারেন। অ্যাগ্রিগেটর ব্যবহার করে ডেটা প্রসেসিং এবং লাইফসাইকেল ম্যানেজমেন্ট ঐচ্ছিক।

  • ডেটা উৎস সংজ্ঞায়িত করুন
  • অ্যাগ্রিগেটর ব্যবহার করে ডেটা প্রসেস করুন
  • ট্রিগারের মাধ্যমে কার্যপ্রবাহ নিয়ন্ত্রণ করুন
  • মেট্রিক্স রিপোর্ট তৈরি করুন
  • ডেটা সংগ্রহের জীবনচক্র পরিচালনা করুন

ডেটা উৎস সংজ্ঞায়িত করুন

যেকোনো মেট্রিক্স ক্যাম্পেইনের ভিত্তি হলো ডেটা। একটি মেট্রিক্স কনফিগারেশনে, ডেটা গ্রহণের প্রক্রিয়াটিকে অ্যাবস্ট্রাক্ট করা থাকে এবং আপনাকে শুধুমাত্র সেই নামটি নির্দিষ্ট করতে হবে যার দ্বারা একটি ডেটা সোর্সকে শনাক্ত করা যায় এবং সংযোগের মোড (সাবস্ক্রিপশন বা অন-ডিমান্ড) উল্লেখ করতে হবে। ডেটা সোর্স হতে পারে এমন যেকোনো সার্ভিস যা SDV কমিউনিকেশন স্ট্যাকের মাধ্যমে ডেটা উপলব্ধ করে অথবা কনফিগারযোগ্য পাবলিশার রেজিস্ট্রি- তে নিজেকে রেজিস্টার করে, যা এমন অ্যাপগুলো থেকে ডেটা সংগ্রহ করতে সক্ষম করে যেখানে SDV মিডলওয়্যার উপলব্ধ নেই। কনফিগারেশনের মধ্যে প্রতিটি ডেটা সোর্সের একটি অনন্য নাম থাকতে হবে যাতে ট্রিগার বা অ্যাগ্রিগেটরের মতো অন্যান্য মেট্রিক্স কনফিগারেশন কম্পোনেন্টগুলো এটিকে রেফারেন্স করতে পারে। এটি কীভাবে সংযোগ স্থাপন করবে, কত ঘন ঘন ডেটা গ্রহণ করবে, তা আপনি কনফিগার করতে পারেন এবং একটি সার্ভিস-নির্দিষ্ট কনফিগারেশন অবজেক্ট প্রদান করতে পারেন।

ডেটা উৎসের কনফিগারেশন

টেলিমেট্রি পরিষেবা দুটি উপায়ে একটি ডেটা উৎসের সাথে সংযোগ করতে পারে:

  • গেটার: মেট্রিক্স কনফিগারেশনে সংজ্ঞায়িত কোনো এক্সপ্রেশনের যখন এই উৎস থেকে ডেটা পড়ার প্রয়োজন হয়, তখন এই মেথডটি চাহিদা অনুযায়ী ডেটা সংগ্রহ করে। এটি এমন ডেটা উৎসের জন্য উপযোগী যা অবিচ্ছিন্ন ডেটা প্রবাহ সরবরাহ করে না অথবা যখন আপনার ডেটার অনিয়মিত স্ন্যাপশট প্রয়োজন হয়।
  • সাবস্ক্রিপশন: এটি ডিফল্ট পদ্ধতি। এটি উৎস থেকে একটি নিরবচ্ছিন্ন ডেটা প্রবাহ স্থাপন করে। এই উৎস থেকে নতুন বার্তা এলে চালু হয় এমন কোনো ডেটা ট্রিগার ব্যবহার করতে চাইলে এই সংযোগের ধরনটি আবশ্যক।

যখন আপনি একটি সাবস্ক্রিপশন ব্যবহার করেন, তখন আপনি কনফিগার করতে পারেন:

  • সাবস্যাম্পলিং: খুব ঘন ঘন ডেটা গ্রহণ এড়ানোর জন্য, আপনি একই উৎস থেকে আসা পরপর বার্তাগুলোর মধ্যে একটি ন্যূনতম সময়ের ব্যবধান নির্ধারণ করতে পারেন। যদি উৎসটি এই ব্যবধানের চেয়ে দ্রুত ডেটা প্রকাশ করে, তাহলে টেলিমেট্রি পরিষেবা নোটিফিকেশনগুলোর গতি কমিয়ে দেয়, এবং এই গতি কমানোর পরে প্রাপ্ত বার্তাগুলোর জন্যই কেবল ডেটা ট্রিগারগুলো সক্রিয় হয়। এর মাধ্যমে কার্যকরভাবে ডেটার সাবস্যাম্পলিং করা হয়।
  • প্রাথমিক বার্তা পুনরুদ্ধার: আপনি পরিষেবাটিকে এমনভাবে কনফিগার করতে পারেন যাতে এটি সাবস্ক্রিপশন স্থাপন করার সময় উৎস থেকে সবচেয়ে সাম্প্রতিক বার্তাটি পুনরুদ্ধার করে। এর ফলে, প্রথম নতুন বার্তাটি প্রকাশিত হওয়ার জন্য অপেক্ষা না করে, যদি কোনো মান উপলব্ধ থাকে তবে ডেটা উৎসটি অবিলম্বে তা দিয়ে পূর্ণ হয়ে যায়। এটি শর্তসাপেক্ষ ট্রিগার বা অ্যাগ্রিগেটরগুলির ক্ষেত্রে উপযোগী, যেগুলির একটি প্রাথমিক অবস্থার প্রয়োজন হয়, অথবা যখন ডেটা উৎসটি অনিয়মিতভাবে তথ্য প্রকাশ করে।

ধরণ নির্বিশেষে, বার্তাগুলি অভ্যন্তরীণভাবে ক্যাশ করা হয়। যদি একটি একক মূল্যায়ন চক্রের সময় একাধিক এক্সপ্রেশন বা অ্যাগ্রিগেটরের একই উৎস থেকে ডেটার প্রয়োজন হয়, তবে সিস্টেমটি ডেটাটি কেবল একবারই সংগ্রহ করে; হয় সাবস্ক্রিপশন ব্যবহার করে নতুন বার্তা এলে ক্যাশ থেকে, অথবা একটি একক অন-ডিমান্ড কলের মাধ্যমে।

অ্যাগ্রিগেটর ব্যবহার করে ডেটা প্রসেস করুন

ডেটা সোর্সগুলো যেখানে র ডেটা সরবরাহ করে, সেখানে অ্যাগ্রিগেটররা স্টেটফুল ও এজ ডেটা প্রসেসিং সম্পাদন করে। তারা ডেটা সোর্স বা অন্যান্য অ্যাগ্রিগেটর থেকে ডেটা গ্রহণ করে, সেটিকে রূপান্তর করে এবং ফলাফলটি মেট্রিক্স রিপোর্টে পড়ার জন্য বা অন্যান্য অ্যাগ্রিগেটর দ্বারা আরও প্রক্রিয়াকরণের জন্য উপলব্ধ করে। এর ফলে বহু-পর্যায়ের প্রসেসিং পাইপলাইন তৈরি করা সম্ভব হয়; যেমন, একটি অ্যাগ্রিগেটরে গতির পরিসংখ্যান গণনা করা এবং সেই পরিসংখ্যানগুলো ড্রাইভিং আচরণের ধরণ শনাক্তকারী অন্য একটি কম্পোনেন্টে ব্যবহার করা।

এক বা একাধিক ট্রিগারের মাধ্যমে অ্যাগ্রিগেটরগুলো তাদের গণনা সম্পাদন করতে সক্রিয় হয়। যখনই এর কোনো একটি ট্রিগার সক্রিয় হয়, অ্যাগ্রিগেটরটি তার নিয়মগুলো মূল্যায়ন করে এবং তার অভ্যন্তরীণ অবস্থা হালনাগাদ করে।

আপনি একটি অ্যাগ্রিগেটরকে এমনভাবে কনফিগার করতে পারেন যাতে অন্য কোনো কম্পোনেন্ট এর মান পড়ে নেওয়ার পর এটি তার স্টেট রিসেট করে, যা পরস্পর ওভারল্যাপ না করা সময়সীমার মধ্যে পরিসংখ্যান গণনার জন্য উপযোগী।

একটি মেসেজ বিল্ডার একটি অ্যাগ্রিগেটরের কাঠামো এবং লজিক নির্ধারণ করে। একটি মেসেজ বিল্ডার একটি প্রোটো মেসেজের প্রতিটি ফিল্ডের জন্য ডেটা কীভাবে তৈরি করতে হবে তা বর্ণনা করার মাধ্যমে এর একটি ইনস্ট্যান্স কীভাবে গঠন করতে হবে তা নির্দিষ্ট করে। প্রতিটি ফিল্ডের জন্য, একটি এক্সপ্রেশন নির্ধারণ করে যে ডেটা সোর্স এবং অ্যাগ্রিগেটর থেকে কীভাবে ডেটা পড়তে হবে এবং সেই ডেটার উপর অপারেশন প্রয়োগ করতে হবে। এছাড়াও, আপনি একটি অ্যাগ্রিগেশন প্রয়োগ করতে পারেন, যা হলো একটি গণনা বা সংগ্রহ অপারেশন যা সময়ের সাথে সাথে এক্সপ্রেশনের ফলাফলের উপর প্রয়োগ করা হয়।

নিম্নলিখিত অ্যাগ্রিগেশন প্রকারগুলি সমর্থিত:

  • গাণিতিক: প্রতিটি ট্রিগারে একটি এক্সপ্রেশন দ্বারা প্রাপ্ত মানগুলোর পরিসংখ্যান (গড়, সর্বনিম্ন, সর্বোচ্চ, যোগফল, স্ট্যান্ডার্ড ডেভিয়েশন এবং ডেল্টা) গণনা করে। ডেল্টা হলো একটি এক্সপ্রেশন দ্বারা প্রাপ্ত বর্তমান এবং পূর্ববর্তী সাংখ্যিক মানের মধ্যকার পার্থক্য।
  • তালিকা: কোনো এক্সপ্রেশন থেকে প্রাপ্ত মানগুলোকে একটি তালিকায় সংগ্রহ করে। সাম্প্রতিক মানগুলোর একটি চলমান উইন্ডো (রিং বাফার) তৈরি করতে আপনি তালিকার আকার সীমিত করতে পারেন।
  • গণনা: বিশেষ ক্ষেত্র যেখানে কোনো এক্সপ্রেশন নির্দিষ্ট করা নেই। এটি গণনা করে যে ফিল্ডটি কতবার মূল্যায়ন করা হয়েছে (অর্থাৎ, অ্যাগ্রিগেটর বা রিপোর্টটি কতবার ট্রিগার করা হয়েছে)।
  • পাসথ্রু: কোনো অ্যাগ্রিগেশন প্রয়োগ না করে সরাসরি একটি এক্সপ্রেশনের ফলাফল ব্যবহার করে। রিপোর্ট কনফিগারেশনে অ্যাগ্রিগেটর থেকে চূড়ান্ত মান অ্যাক্সেস করার জন্য এটি উপযোগী।

নিম্নলিখিত চিত্রটি অ্যাগ্রিগেটর মূল্যায়ন ব্যাখ্যা করার জন্য একটি ধারণামূলক ডায়াগ্রাম:

অ্যাগ্রিগেটর মূল্যায়ন চিত্রিতকারী ধারণাগত ডায়াগ্রাম।

চিত্র ২. অ্যাগ্রিগেটর মূল্যায়ন।

এক্সপ্রেশন ব্যবহার করে গণনা করুন বা শর্ত নির্ধারণ করুন।

মেসেজ বিল্ডার এবং কন্ডিশনাল ট্রিগারের মধ্যে গণনা সম্পাদন করতে বা শর্ত নির্ধারণ করতে এক্সপ্রেশন ব্যবহার করা হয়। মেট্রিক্স কনফিগারেশন জেনারেটর (MCG) ব্যবহার করে যখন মেট্রিক্স কনফিগারেশন JSON অবজেক্ট তৈরি করা হয়, তখন এক্সপ্রেশনগুলো মানুষের পাঠযোগ্য স্ট্রিং হিসাবে লেখা হয়, যা ডেটা সোর্সের ফিল্ড অ্যাক্সেস করতে (উদাহরণস্বরূপ, vehicle_speed.speed_value ) এবং বিভিন্ন ধরনের অপারেশন প্রয়োগ করতে ডট নোটেশন ব্যবহার করে। চূড়ান্ত MetricsConfig প্রোটোবাফ মেসেজে ডিভাইসে দক্ষতার সাথে মূল্যায়নের জন্য, MCG এই স্ট্রিংগুলোকে একটি অপ্টিমাইজড ট্রি স্ট্রাকচারে অনুবাদ করে, যা একটি অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST)-এর অনুরূপ।

অপারেটর এবং কার্যাবলী

এক্সপ্রেশনগুলো নিম্নলিখিত অপারেটর ও ফাংশনসমূহ সমর্থন করে:

  • পাটিগণিত: যোগ, বিয়োগ (বাইনারি ও ইউনারি), গুণ, ভাগ, মডুলো এবং ঘাত সমর্থন করে।
  • লজিক্যাল: AND, OR, NOT, এবং XOR সমর্থন করে।
  • সম্পর্কমূলক: সমতা যাচাই এবং বৃহত্তর ও ক্ষুদ্রতর তুলনা সমর্থন করে।
  • তালিকা: কোনো তালিকায় একটি নির্দিষ্ট মান আছে কি নেই, তা যাচাই করে।
  • টাইমস্ট্যাম্প: মূল্যায়নের সময়কার টাইমস্ট্যাম্পটি মাইক্রোসেকেন্ডে ফেরত দেয়। ক্লকের ধরন হতে পারে রিয়েলটাইম ক্লক, বুট হওয়ার পর থেকে একমুখী সময় (সাসপেন্ড টাইম সহ), অথবা বুট বা শেষ রিজুম হওয়ার পর থেকে একমুখী সময়।
  • পরম মান: কোনো সংখ্যার পরম মান প্রদান করে।
  • আসন্নীকরণ: নিকটতম পূর্ণসংখ্যায় আসন্নীকরণ করে ( round ), কোনো সংখ্যার চেয়ে ছোট বা সমান বৃহত্তম পূর্ণসংখ্যাটি ফেরত দেয় ( floor ), অথবা কোনো সংখ্যার চেয়ে বড় বা সমান ক্ষুদ্রতম পূর্ণসংখ্যাটি ফেরত দেয় ( ceil )।

এখানে একটি উদাহরণ এক্সপ্রেশন দেওয়া হল যা দুটি ডেটা উৎস থেকে ডেটা পড়ে এবং যদি গাড়ির গতি 100 কিমি/ঘন্টা অতিক্রম করে এবং টায়ারের চাপের কোনও সতর্কতা না থাকে তবে এর মান ' true হয়:

(vehicle_speed.speed_value * 3.6) > 100 && tire_pressure.warning == false

ট্রিগারের মাধ্যমে কার্যপ্রবাহ নিয়ন্ত্রণ করুন

ট্রিগার হলো মেট্রিক্স কনফিগারেশনের নিয়ন্ত্রক; এগুলো নিয়ন্ত্রণ করে কখন ডেটা প্রসেস করা হবে এবং কখন রিপোর্ট তৈরি হবে। প্রতিটি ট্রিগারের একটি অনন্য নাম থাকতে হবে।

তিন ধরনের উদ্দীপক রয়েছে:

  • ডেটা ট্রিগার: যখন সাবস্ক্রিপশন সংযোগসহ কোনো ডেটা সোর্স একটি নতুন মেসেজ প্রকাশ করে (কনফিগার করা থাকলে সাবস্যাম্পলিং-এর পরে), তখন এটি সক্রিয় হয়।
  • পর্যায়ক্রমিক ট্রিগার: একটি নির্দিষ্ট সময় অন্তর সক্রিয় হয়।
  • শর্তসাপেক্ষ ট্রিগার: কোনো নির্দিষ্ট যৌক্তিক শর্ত পূরণ হলে এটি সক্রিয় হয়।

শর্তসাপেক্ষ ট্রিগার

কন্ডিশনাল ট্রিগারগুলো অন্যান্য ট্রিগারের (ডেটা, পিরিয়ডিক বা অন্য কোনো কন্ডিশনাল ট্রিগার) সংকেত শোনে এবং যখন সেই ট্রিগারগুলোর কোনো একটি সক্রিয় হয়, তখন একটি এক্সপ্রেশন মূল্যায়ন করে। কন্ডিশনাল ট্রিগারটি কেবল তখনই সক্রিয় হয়, যখন এক্সপ্রেশনটির ফলাফল একটি নির্দিষ্ট শর্ত পূরণ করে।

আপনি বিভিন্ন ধরণের শর্তের উপর ভিত্তি করে একটি শর্তসাপেক্ষ ট্রিগার সক্রিয় করার জন্য কনফিগার করতে পারেন:

  • মান: যখন এক্সপ্রেশনটির মান true (বা অশূন্য) অথবা false (বা শূন্য) হয়।
  • রাইজিং এজ: যখন কোনো বুলিয়ান এক্সপ্রেশন true থেকে false তে পরিবর্তিত হয়, অথবা কোনো সাংখ্যিক মান বৃদ্ধি পায়।
  • ফলিং এজ: যখন কোনো বুলিয়ান এক্সপ্রেশন true থেকে false এ পরিবর্তিত হয়, অথবা কোনো সাংখ্যিক মান হ্রাস পায়।
  • পরিবর্তনের ক্ষেত্রে: যখনই এক্সপ্রেশনটির ফলাফল তার পূর্ববর্তী মান থেকে ভিন্ন হয়।
কোলাহলপূর্ণ অবস্থার পরিবর্তন ফিল্টার করুন

এজ-ভিত্তিক বা অন-চেঞ্জ ট্রিগারের ক্ষেত্রে, ট্রিগারটি ফায়ার হওয়ার আগে কন্ডিশনটিকে একটি ন্যূনতম সময় ধরে নতুন স্টেটে থাকার শর্ত আরোপ করে আপনি সংক্ষিপ্ত বা নয়েজি স্টেট পরিবর্তন (গ্লিচ) ফিল্টার করে বাদ দিতে পারেন।

উদাহরণস্বরূপ, আপনি একটি ট্রিগারকে এমনভাবে কনফিগার করতে পারেন যা কেবল তখনই সক্রিয় হবে যখন vehicle_speed > 100 শর্তটি true হবে এবং কমপক্ষে ৫ সেকেন্ড ধরে true থাকবে। এর ফলে স্পিড রিডিং-এ ক্ষণস্থায়ী আকস্মিক বৃদ্ধির কারণে ট্রিগারটি সক্রিয় হওয়া থেকে বিরত থাকে। আপনি এমন শর্তও আরোপ করতে পারেন যে এই স্থির থাকার সময়কালে প্রদর্শিত সমস্ত মান হুবহু সমান হবে।

মেট্রিক্স রিপোর্ট তৈরি করুন

ডেটা প্রক্রিয়াজাত করার পরে, আপনি নির্ধারণ করেন যে এটি কীভাবে এবং কখন রিপোর্টে প্যাকেজ করা হবে।

মেট্রিক্স রিপোর্ট কনফিগারেশন ব্যবহার করে রিপোর্টগুলো সংজ্ঞায়িত করা হয়, যা এর আউটপুটের কাঠামো ও বিষয়বস্তু নির্ধারণ করতে মেসেজ বিল্ডার ব্যবহার করে। যখন রিপোর্টের কোনো একটি ট্রিগার সক্রিয় হয়, তখন মেসেজ বিল্ডারটি রিপোর্টের ডেটা পেলোড তৈরি করার জন্য এর ফিল্ড অ্যাসাইনমেন্টগুলো মূল্যায়ন করে।

প্রতিটি তৈরি করা রিপোর্ট হলো একটি MetricsReport Protobuf মেসেজের ইনস্ট্যান্স, যা মেসেজ বিল্ডারের আউটপুটকে একটি payload ফিল্ডে মোড়কজাত করে এবং মেটাডেটা যোগ করে। টেলিমেট্রি পরিষেবা স্বয়ংক্রিয়ভাবে প্রতিটি MetricsReport এ নিম্নলিখিত মেটাডেটা যোগ করে:

  • রিপোর্টের জন্য একটি সার্বজনীনভাবে অনন্য শনাক্তকারী (UUID)।
  • একটি ক্রমিক রিপোর্ট নম্বর, যা এই রিপোর্ট কনফিগারেশন দ্বারা তৈরি প্রতিটি রিপোর্টের জন্য বৃদ্ধি পায়।
  • প্রতিবেদনটি তৈরি হওয়ার সময়সূচক।
  • তৈরির কারণ (উদাহরণস্বরূপ, কোনো নিয়ম দ্বারা চালিত, বা শাটডাউনের সময় তৈরি হয়)
  • যে মেট্রিক্স কনফিগারেশনটি রিপোর্টটি তৈরি করেছে তার UUID এবং সংস্করণ।
  • মেট্রিক্স রিপোর্ট কনফিগারেশনের নাম

প্রতিবেদন তৈরির নিয়ন্ত্রণ

যদিও রিপোর্টগুলি সাধারণত ট্রিগারের প্রতিক্রিয়ায় তৈরি হয়, আপনি মেট্রিক্স কনফিগারেশনের নির্দিষ্ট লাইফসাইকেল মুহূর্তেও সেগুলি তৈরি করার জন্য কনফিগার করতে পারেন:

  • সক্রিয়করণের প্রতিবেদন: যদি এটি সক্রিয় করা থাকে, তাহলে মেট্রিক্স কনফিগারেশন সক্রিয় করার সাথে সাথেই সিস্টেম একটি প্রাথমিক প্রতিবেদন তৈরি করে।
  • চূড়ান্ত প্রতিবেদন: এটি সক্রিয় করা থাকলে, ডেটা সংগ্রহ থামানো বা বন্ধ করা হলে, অথবা টেলিমেট্রি পরিষেবা বন্ধ হয়ে গেলে সিস্টেম একটি চূড়ান্ত প্রতিবেদন তৈরি করে। এই প্রতিবেদনে সেই মুহূর্ত পর্যন্ত সংগৃহীত ডেটা থাকে, যা একটি সেশনের শেষে কোনো ডেটা যাতে হারিয়ে না যায় তা নিশ্চিত করতে সাহায্য করে।

ডেটা সংগ্রহের জীবনচক্র পরিচালনা করুন

ডিফল্টরূপে, কোনো ক্লায়েন্ট দ্বারা একটি মেট্রিক্স কনফিগারেশন সক্রিয় করার সাথে সাথেই তা ডেটা সংগ্রহ ও প্রক্রিয়াকরণ শুরু করে এবং ক্লায়েন্ট কর্তৃক নিষ্ক্রিয় না করা পর্যন্ত তা চলতে থাকে। তবে, আপনি ট্রিগার নির্ধারণ করার মাধ্যমে এই জীবনচক্রকে আরও সূক্ষ্মভাবে নিয়ন্ত্রণ করতে পারেন, যা ডেটা সংগ্রহ অথবা মেট্রিক্স কনফিগারেশন শুরু বা বন্ধ করে।

  • স্টার্ট ট্রিগার: যদি সংজ্ঞায়িত করা থাকে, তবে এই ট্রিগারটি সক্রিয় হলেই কেবল ডেটা সংগ্রহ শুরু হয়। যদি কোনো স্টপ ট্রিগারের মাধ্যমে সংগ্রহ স্থগিত করা হয়ে থাকে, তবে স্টার্ট ট্রিগারটি তা পুনরায় চালু করে।
  • স্টপ ট্রিগার: যদি সংজ্ঞায়িত করা থাকে, এই ট্রিগারটি ডেটা সংগ্রহ থামিয়ে দেয়। স্টার্ট ট্রিগারটি পুনরায় সক্রিয় না হওয়া পর্যন্ত অ্যাগ্রিগেশন এবং রিপোর্ট তৈরি বন্ধ থাকে।
  • নিষ্ক্রিয়করণ ট্রিগার: এই ট্রিগারটি মেট্রিক্স কনফিগারেশনকে ঠিক সেভাবেই নিষ্ক্রিয় করে, যেভাবে ক্লায়েন্ট থেকে একটি deactivate_metrics_config কল করে থাকে।

উদাহরণস্বরূপ, আপনি একটি শর্তসাপেক্ষ ট্রিগার নির্ধারণ করতে পারেন যা vehicle_state DRIVING পরিবর্তিত হলে স্টার্ট ট্রিগার হিসেবে কাজ করবে, এবং আরেকটি যা vehicle_state PARKED পরিবর্তিত হলে স্টপ ট্রিগার হিসেবে কাজ করবে। এটি নিশ্চিত করতে সাহায্য করে যে, শুধুমাত্র গাড়িটি গতিশীল থাকাকালীনই ডেটা সংগ্রহ করা হবে।