paint-brush
কিভাবে eBPF পর্যবেক্ষণযোগ্যতাকে আমরা জানি 🕵️‍♀️🐝 রূপান্তরিত করেদ্বারা@zerok
2,808 পড়া
2,808 পড়া

কিভাবে eBPF পর্যবেক্ষণযোগ্যতাকে আমরা জানি 🕵️‍♀️🐝 রূপান্তরিত করে

দ্বারা ZeroK13m2023/05/28
Read on Terminal Reader
Read this story w/o Javascript

অতিদীর্ঘ; পড়তে

eBPF হল একটি প্রোগ্রামিং ফ্রেমওয়ার্ক যা আমাদেরকে কার্নেল কোড পরিবর্তন না করেই লিনাক্স কার্নেলে স্যান্ডবক্সড প্রোগ্রামগুলিকে নিরাপদে চালাতে দেয়। ইবিপিএফ প্রোগ্রামগুলি ডিজাইনের দ্বারা অত্যন্ত দক্ষ এবং সুরক্ষিত - সেগুলি অপারেটিং সিস্টেমের স্থিতিশীলতা বা সুরক্ষার ঝুঁকি না নেওয়ার জন্য কার্নেল দ্বারা যাচাই করা হয়। এটি মূলত লিনাক্সের জন্য তৈরি করা হয়েছিল (এবং এটি এখনও যেখানে প্রযুক্তিটি আজ সবচেয়ে পরিপক্ক)
featured image - কিভাবে eBPF পর্যবেক্ষণযোগ্যতাকে আমরা জানি 🕵️‍♀️🐝 রূপান্তরিত করে
ZeroK HackerNoon profile picture
0-item
1-item

ডিকোডিং ইবিপিএফ পর্যবেক্ষণযোগ্যতা:

গত 2 বছরে ক্লাউড-নেটিভ সম্প্রদায়গুলিতে eBPF নিয়ে অনেক বকবক হয়েছে৷ eBPF ছিল KubeCon-এ একটি প্রধান ভিত্তি , eBPF দিন এবং eBPF সামিটগুলি দ্রুত জনপ্রিয়তা বৃদ্ধি পাচ্ছে, Google এবং Netflix-এর মতো কোম্পানিগুলি বছরের পর বছর ধরে eBPF ব্যবহার করে আসছে, এবং নতুন ব্যবহারের ক্ষেত্রে সব সময়ই আবির্ভূত হচ্ছে৷ বিশেষ করে পর্যবেক্ষণের ক্ষেত্রে, eBPF একটি গেম চেঞ্জার হতে পারে বলে আশা করা হচ্ছে।


তাহলে আসুন ইবিপিএফ-এর দিকে তাকাই - প্রযুক্তিটি কী, এটি কীভাবে পর্যবেক্ষণযোগ্যতাকে প্রভাবিত করছে, এটি বিদ্যমান পর্যবেক্ষণের অনুশীলনের সাথে কীভাবে তুলনা করে এবং ভবিষ্যতে কী থাকতে পারে?

ইবিপিএফ আসলে কি?

eBPF হল একটি প্রোগ্রামিং ফ্রেমওয়ার্ক যা আমাদেরকে কার্নেল কোড পরিবর্তন না করেই লিনাক্স কার্নেলে নিরাপদে স্যান্ডবক্সড প্রোগ্রাম চালাতে দেয়।


এটি মূলত লিনাক্সের জন্য তৈরি করা হয়েছিল (এবং এটি এখনও যেখানে প্রযুক্তিটি আজকে সবচেয়ে পরিপক্ক), তবে মাইক্রোসফ্ট উইন্ডোজের জন্য ইবিপিএফ বাস্তবায়নের দ্রুত বিকাশ ঘটাচ্ছে।


ইবিপিএফ প্রোগ্রামগুলি ডিজাইনের দ্বারা অত্যন্ত দক্ষ এবং সুরক্ষিত - সেগুলি অপারেটিং সিস্টেমের স্থিতিশীলতা বা সুরক্ষার ঝুঁকি না নেওয়ার জন্য কার্নেল দ্বারা যাচাই করা হয়।

তাহলে কেন eBPF একটি বড় চুক্তি?

এটা বোঝার জন্য আমাদের User space এবং Kernel space বুঝতে হবে।


ব্যবহারকারী স্থান যেখানে সমস্ত অ্যাপ্লিকেশন চলে। কার্নেল স্থান ব্যবহারকারী স্থান এবং শারীরিক হার্ডওয়্যারের মধ্যে বসে। ব্যবহারকারী স্থানের অ্যাপ্লিকেশনগুলি সরাসরি হার্ডওয়্যার অ্যাক্সেস করতে পারে না। পরিবর্তে, তারা কার্নেলে সিস্টেম কল করে, যা তারপর হার্ডওয়্যার অ্যাক্সেস করে।


সমস্ত মেমরি অ্যাক্সেস, ফাইল রিড/রাইট এবং নেটওয়ার্ক ট্রাফিক কার্নেলের মধ্য দিয়ে যায়। কার্নেল সমসাময়িক প্রক্রিয়াগুলিও পরিচালনা করে।


মূলত, সবকিছু কার্নেলের মধ্য দিয়ে যায় (নীচের চিত্র দেখুন)।

এবং eBPF কার্নেলের কার্যকারিতা প্রসারিত করার জন্য একটি নিরাপদ, নিরাপদ উপায় প্রদান করে।


ইউজার স্পেস এবং কার্নেল স্পেস


ঐতিহাসিকভাবে, সুস্পষ্ট কারণে, কার্নেল সোর্স কোড বা অপারেটিং সিস্টেম লেয়ারে কিছু পরিবর্তন করা অত্যন্ত কঠিন।


লিনাক্স কার্নেলের কোডের 30M লাইন রয়েছে এবং যেকোন পরিবর্তনের ধারণা থেকে ব্যাপকভাবে উপলব্ধ হতে বেশ কয়েক বছর সময় লাগে। প্রথমত, লিনাক্স সম্প্রদায়কে এটির সাথে একমত হতে হবে। তারপর, এটি অফিসিয়াল লিনাক্স রিলিজের অংশ হয়ে উঠতে হবে। তারপর, কয়েক মাস পরে, এটিকে Red Hat এবং Ubuntu-এর মতো বিতরণ দ্বারা বাছাই করা হয়, যা এটিকে ব্যাপক দর্শকদের কাছে নিয়ে যায়।


প্রযুক্তিগতভাবে, কেউ একজনের কার্নেলে কার্নেল মডিউল লোড করতে পারে এবং সরাসরি পরিবর্তন করতে পারে, কিন্তু এটি খুবই ঝুঁকিপূর্ণ এবং জটিল কার্নেল-স্তরের প্রোগ্রামিং জড়িত, তাই এটি প্রায় সর্বজনীনভাবে এড়ানো যায়।


eBPF আসে এবং এটি সমাধান করে - এবং কার্নেলে প্রোগ্রাম সংযুক্ত এবং চালানোর জন্য একটি নিরাপদ এবং দক্ষ প্রক্রিয়া দেয়।


আসুন দেখি কিভাবে eBPF নিরাপত্তা এবং কর্মক্ষমতা উভয়ই নিশ্চিত করে।

অত্যন্ত নিরাপদ

  • কঠোর যাচাইকরণ - কোনো ইবিপিএফ প্রোগ্রাম একটি কার্নেলে লোড করার আগে, এটি eBPF যাচাইকারী দ্বারা যাচাই করা হয়, যা নিশ্চিত করে যে কোডটি একেবারে নিরাপদ - যেমন, কোন হার্ড লুপ, অবৈধ মেমরি অ্যাক্সেস, অনিরাপদ অপারেশন।


  • স্যান্ডবক্সড - eBPF প্রোগ্রামগুলি কার্নেলের মধ্যে একটি মেমরি-বিচ্ছিন্ন স্যান্ডবক্সে চালানো হয়, অন্যান্য কার্নেলের উপাদান থেকে আলাদা। এটি কার্নেল মেমরি, ডেটা স্ট্রাকচার এবং কার্নেল সোর্স কোডে অননুমোদিত অ্যাক্সেস রোধ করে।


  • সীমিত ক্রিয়াকলাপ - eBPF প্রোগ্রামগুলি সাধারণত সি ভাষার একটি ছোট উপসেটে লিখতে হয় - একটি সীমাবদ্ধ নির্দেশ সেট। এটি ক্রিয়াকলাপগুলিকে সীমিত করে যা eBPF প্রোগ্রামগুলি সম্পাদন করতে পারে, নিরাপত্তা দুর্বলতার ঝুঁকি হ্রাস করে৷

উচ্চ কর্মক্ষমতা / লাইটওয়েট

  • নেটিভ মেশিন কোড হিসাবে চালান - eBPF প্রোগ্রামগুলি CPU-তে নেটিভ মেশিন নির্দেশাবলী হিসাবে চালানো হয়। এটি দ্রুত সম্পাদন এবং ভাল কর্মক্ষমতা বাড়ে।


  • কোন প্রসঙ্গ সুইচ নেই - একটি নিয়মিত অ্যাপ্লিকেশন নিয়মিতভাবে ব্যবহারকারী-স্পেস এবং কার্নেল-স্পেসের মধ্যে প্রসঙ্গ-সুইচ করে, যা সম্পদ নিবিড়। eBPF প্রোগ্রামগুলি, যেমন তারা কার্নেল স্তরে চলে, সরাসরি কার্নেল ডেটা কাঠামো এবং সংস্থানগুলি অ্যাক্সেস করতে পারে।


  • ইভেন্ট-চালিত - eBPF প্রোগ্রামগুলি সাধারণত শুধুমাত্র নির্দিষ্ট কার্নেল ইভেন্ট বনাম সর্বদা-অন থাকার প্রতিক্রিয়ায় চলে। এটি ওভারহেড কমিয়ে দেয়।


  • হার্ডওয়্যারের জন্য অপ্টিমাইজ করা হয়েছে - eBPF প্রোগ্রামগুলি এক্সিকিউশনের ঠিক আগে কার্নেলের JIT (জাস্ট-ইন-টাইম) কম্পাইলার দ্বারা মেশিন কোডে কম্পাইল করা হয়, তাই কোডটি যে নির্দিষ্ট হার্ডওয়্যারে চলে তার জন্য অপ্টিমাইজ করা হয়।


সুতরাং eBPF প্রোগ্রামিং এর জন্য কার্নেলে একটি নিরাপদ এবং দক্ষ হুক প্রদান করে। এবং সবকিছু কার্নেলের মধ্য দিয়ে যায়, এটি অনেকগুলি নতুন সম্ভাবনা উন্মুক্ত করে যা এখন পর্যন্ত সম্ভব ছিল না।

এখন কেন এটা একটা বড় ব্যাপার?

eBPF এর আশেপাশের প্রযুক্তিটি দীর্ঘকাল ধরে বিকশিত হয়েছে এবং তৈরিতে ~30 বছর হয়েছে।


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

eBPF - একটি সংক্ষিপ্ত ইতিহাস

  • 1993- লরেন্স বার্কলে ন্যাশনাল ল্যাবের একটি কাগজ প্যাকেট ফিল্টারিংয়ের জন্য কার্নেল এজেন্ট ব্যবহার করে অনুসন্ধান করে। এখান থেকেই BPF ("বার্কলে প্যাকেট ফিল্টার") নামটি এসেছে।

  • 1997 - লিনাক্স কার্নেলের অংশ হিসাবে BPF আনুষ্ঠানিকভাবে চালু করা হয় (সংস্করণ 2.1.75)।

  • 1997-2014 - BPF ক্ষমতা উন্নত, স্থিতিশীল এবং প্রসারিত করতে বেশ কিছু বৈশিষ্ট্য যুক্ত করা হয়েছে।

  • 2014 - "বর্ধিত বার্কলে প্যাকেট ফিল্টার" (eBPF) নামে একটি উল্লেখযোগ্য আপডেট চালু করা হয়েছে। এই সংস্করণটি BPF প্রযুক্তিতে বড় পরিবর্তন করে এবং এটিকে আরও ব্যাপকভাবে ব্যবহারযোগ্য করে তোলে - তাই "বর্ধিত" শব্দটি


কেন এই রিলিজটি বড় ছিল, এটি কার্নেলের কার্যকারিতা প্রসারিত করা সহজ করে তুলেছিল।

একজন প্রোগ্রামার কমবেশি কোড করতে পারে যেমন তারা একটি নিয়মিত অ্যাপ্লিকেশন - এবং আশেপাশের eBPF অবকাঠামো নিম্ন-স্তরের যাচাইকরণ, নিরাপত্তা এবং দক্ষতার যত্ন নেয়।

একটি সম্পূর্ণ সমর্থনকারী ইকোসিস্টেম এবং eBPF এর চারপাশে ভারা এটিকে সম্ভব করে তোলে (নীচের চিত্রটি দেখুন)।

eBPF ইকোসিস্টেম এবং স্ট্যাক

সূত্র: https://ebpf.io/what-is-ebpf/

এর চেয়েও ভালো, কোনো রিস্টার্ট ছাড়াই কার্নেল থেকে eBPF প্রোগ্রাম লোড এবং আনলোড করা যেতে পারে।

এই সব হঠাৎ ব্যাপকভাবে গ্রহণ এবং প্রয়োগের জন্য অনুমোদিত।

উৎপাদন ব্যবস্থায় ব্যাপক গ্রহণ

eBPF এর জনপ্রিয়তা গত 7-8 বছরে বিস্ফোরিত হয়েছে, বেশ কয়েকটি বড় কোম্পানি এটিকে স্কেল উৎপাদন ব্যবস্থায় ব্যবহার করছে।


  • 2016 সাল নাগাদ, Netflix ট্রেসিংয়ের জন্য ব্যাপকভাবে eBPF ব্যবহার করছিল। ব্রেন্ডন গ্রেগ , যিনি এটি বাস্তবায়ন করেছিলেন, ইবিপিএফ-এর একটি কর্তৃপক্ষ হিসাবে অবকাঠামো ও অপারেশন সার্কেলে ব্যাপকভাবে পরিচিত হয়ে ওঠেন।

  • 2017 - Facebook ওপেন-সোর্স কাত্রান , তাদের eBPF-ভিত্তিক লোড ব্যালেন্সার। 2017 সাল থেকে Facebook.com- এ প্রতিটি একক প্যাকেট eBPF এর মাধ্যমে চলে গেছে।

  • 2020- Google তার Kubernetes অফারের eBPF অংশ তৈরি করেছে। eBPF এখন GKE-এর নেটওয়ার্কিং, নিরাপত্তা এবং পর্যবেক্ষণের স্তরকে ক্ষমতা দেয়। এখন পর্যন্ত ক্যাপিটাল ওয়ান এবং অ্যাডোবের মতো কোম্পানিগুলিতে বিস্তৃত এন্টারপ্রাইজ গ্রহণ করা হয়েছে৷

  • 2021 - Facebook, Google, Netflix, Microsoft এবং Isovalent একত্রিত হয়ে eBPF ফাউন্ডেশন ঘোষণা করে eBPF প্রযুক্তির বৃদ্ধি পরিচালনা করার জন্য।


এখন হাজার হাজার কোম্পানি eBPF ব্যবহার করছে এবং শত শত eBPF প্রকল্প প্রতি বছর বিভিন্ন ব্যবহারের ক্ষেত্রে অন্বেষণ করে আসছে।


eBPF এখন লিনাক্স কার্নেলের মধ্যে একটি পৃথক সাবসিস্টেম যা এটিকে সমর্থন করার জন্য একটি বিস্তৃত সম্প্রদায় রয়েছে। প্রযুক্তি নিজেই বেশ কিছু নতুন সংযোজনের সাথে যথেষ্ট প্রসারিত হয়েছে।

তাহলে আমরা eBPF দিয়ে কি করতে পারি?

ইবিপিএফ-এর জন্য সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে 3টি ক্ষেত্রে রয়েছে-


  1. নেটওয়ার্কিং
  2. নিরাপত্তা
  3. পর্যবেক্ষণযোগ্যতা


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


প্রথমে নিরাপত্তা এবং নেটওয়ার্কিং এর ক্ষেত্রে ব্যবহার করা যাক।

নিরাপত্তা

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


উদাহরণ স্বরূপ -


  • Google স্কেলে অনুপ্রবেশ সনাক্তকরণের জন্য eBPF ব্যবহার করে

  • Shopify কন্টেইনার নিরাপত্তা বাস্তবায়নের জন্য eBPF ব্যবহার করে


বেশ কিছু তৃতীয় পক্ষের নিরাপত্তা অফার এখন ডেটা সংগ্রহ এবং পর্যবেক্ষণের জন্য eBPF ব্যবহার করে।

নেটওয়ার্কিং

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


এটি বিভিন্ন নেটওয়ার্কিং ব্যবহারের ক্ষেত্রে যেমন লোড ব্যালেন্সিং, DDoS প্রতিরোধ, ট্র্যাফিক শেপিং, এবং কোয়ালিটি অফ সার্ভিস (QoS) এর জন্য অনুমতি দেয়।


  • ক্লাউডফ্লেয়ার ডিডিওএস আক্রমণ সনাক্ত এবং প্রতিরোধ করতে ইবিপিএফ ব্যবহার করে, নেটওয়ার্ক কর্মক্ষমতা প্রভাবিত না করে প্রতি সেকেন্ডে 10M প্যাকেট প্রক্রিয়াকরণ করে।
  • Meta এর eBPF-ভিত্তিক Katran সমস্ত Facebook-এর জন্য লোড-ব্যালেন্সিং করে

পর্যবেক্ষণযোগ্যতা

এখন পর্যন্ত এটি অবশ্যই সহজবোধ্য হতে হবে যে কীভাবে ইবিপিএফ পর্যবেক্ষণযোগ্যতার ক্ষেত্রে কার্যকর হতে পারে।


সবকিছু কার্নেলের মধ্য দিয়ে যায়। এবং eBPF কার্নেল থেকে সবকিছু পর্যবেক্ষণ করার জন্য একটি অত্যন্ত কার্যকরী এবং নিরাপদ উপায় প্রদান করে।


আসুন আমরা পর্যবেক্ষণযোগ্যতার গভীরে প্রবেশ করি এবং এই প্রযুক্তির প্রভাবগুলি দেখি।

ইবিপিএফ ঠিক কীভাবে পর্যবেক্ষণযোগ্যতাকে প্রভাবিত করে?

এটি অন্বেষণ করার জন্য, আসুন eBPF মহাবিশ্ব থেকে বেরিয়ে আসা যাক এবং পর্যবেক্ষণযোগ্যতা মহাবিশ্বে এবং দেখুন আমাদের মানক পর্যবেক্ষণযোগ্যতা সমাধান কী তৈরি করে।


যেকোন পর্যবেক্ষণযোগ্য সমাধানে 4টি প্রধান উপাদান থাকে-


  1. ডেটা সংগ্রহ - অ্যাপ্লিকেশন এবং অবকাঠামো থেকে টেলিমেট্রি ডেটা পাওয়া

  2. ডেটা প্রসেসিং - ফিল্টারিং, ইনডেক্সিং, এবং সংগৃহীত ডেটাতে গণনা সম্পাদন করা

  3. ডেটা স্টোরেজ - স্বল্পমেয়াদী এবং দীর্ঘমেয়াদী ডেটা স্টোরেজ

  4. ব্যবহারকারীর অভিজ্ঞতা স্তর - ব্যবহারকারী কীভাবে ডেটা ব্যবহার করে তা নির্ধারণ করা


এর মধ্যে, eBPF যা প্রভাব ফেলে (আজকের হিসাবে), তা হল প্রকৃতপক্ষে ডেটা সংগ্রহের স্তর - eBPF ব্যবহার করে সরাসরি কার্নেল থেকে টেলিমেট্রি ডেটা সহজে সংগ্রহ করা।


পর্যবেক্ষণযোগ্যতার উপর eBPF প্রভাব


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


কিভাবে eBPF পর্যবেক্ষণযোগ্যতা কাজ করে

ইবিপিএফ পর্যবেক্ষণের পিছনে অন্তর্নিহিত প্রক্রিয়াগুলি সম্পূর্ণরূপে বোঝার জন্য, আমাদের হুকের ধারণাটি বুঝতে হবে।


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


প্রথমত, এই হুকগুলি কার্নেল স্পেস বা ইউজার স্পেসে হতে পারে। সুতরাং eBPF ব্যবহারকারী স্থান অ্যাপ্লিকেশনের পাশাপাশি কার্নেল-স্তরের ইভেন্ট উভয় নিরীক্ষণ করতে ব্যবহার করা যেতে পারে।


দ্বিতীয়ত, এই হুকগুলি হয় পূর্ব-নির্ধারিত/অচল বা চলমান সিস্টেমে গতিশীলভাবে ঢোকানো যেতে পারে (পুনরায় চালু না করে!)


চারটি স্বতন্ত্র eBPF মেকানিজম এগুলির প্রত্যেকটির জন্য অনুমতি দেয় (নীচের চিত্রটি দেখুন)



পূর্বনির্ধারিত/ম্যানুয়াল

গতিশীল

কার্নেল

কার্নেল ট্রেসপয়েন্ট

kprobes

ইউজারস্পেস

USDT

উপদ্রব


স্ট্যাটিক এবং ডাইনামিক eBPF ইউজার স্পেস এবং কার্নেল স্পেসে হুক করে


  1. কার্নেল ট্রেসপয়েন্ট - কার্নেল ডেভেলপারদের (TRACE_EVENT ম্যাক্রো সহ) দ্বারা পূর্ব-নির্ধারিত ইভেন্টগুলিতে হুক করতে ব্যবহৃত হয়

  2. USDT - অ্যাপ্লিকেশন কোডে বিকাশকারীদের দ্বারা সেট করা পূর্বনির্ধারিত ট্রেসপয়েন্টগুলিতে হুক করতে ব্যবহৃত হয়

  3. Kprobes (কার্নেল প্রোব) - রানটাইমে কার্নেল কোডের যেকোনো অংশে গতিশীলভাবে হুক করতে ব্যবহৃত হয়

  4. আপরোবস (ইউজার প্রোব) - রানটাইমে ইউজার-স্পেস অ্যাপ্লিকেশনের যেকোনো অংশে গতিশীলভাবে হুক করতে ব্যবহৃত হয়


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


কিন্তু আরও আকর্ষণীয় হল kprobes এবং uprobes। যদি কিছু উৎপাদনে বিঘ্নিত হয় এবং আমার কাছে পর্যাপ্ত তথ্য না থাকে এবং আমি রানটাইমে গতিশীলভাবে ইনস্ট্রুমেন্টেশন যোগ করতে চাই? সেখানেই kprobes এবং uprobes শক্তিশালী পর্যবেক্ষণের অনুমতি দেয়।


কিভাবে eBPF kprobes এবং uprobes কাজ করে


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


এখন যেহেতু আমরা জানি কিভাবে ইবিপিএফের সাথে পর্যবেক্ষণযোগ্যতা কাজ করে, আসুন ব্যবহারের ক্ষেত্রে দেখি।

eBPF পর্যবেক্ষণযোগ্যতা ব্যবহারের ক্ষেত্রে

eBPF প্রায় সব সাধারণ বিদ্যমান পর্যবেক্ষণযোগ্যতা ব্যবহারের ক্ষেত্রে ব্যবহার করা যেতে পারে, এবং উপরন্তু নতুন সম্ভাবনা উন্মুক্ত করে।


  1. সিস্টেম এবং অবকাঠামো পর্যবেক্ষণ: eBPF সিস্টেম-স্তরের ইভেন্টগুলি যেমন CPU ব্যবহার, মেমরি বরাদ্দকরণ, ডিস্ক I/O, এবং নেটওয়ার্ক ট্র্যাফিকের গভীর পর্যবেক্ষণের জন্য অনুমতি দেয়। উদাহরণস্বরূপ, LinkedIn তাদের সমস্ত ইনফ্রা পর্যবেক্ষণের জন্য eBPF ব্যবহার করে


  2. কন্টেইনার এবং কুবারনেটস মনিটরিং: কুবারনেটস-নির্দিষ্ট মেট্রিক্স, রিসোর্স ব্যবহার এবং পৃথক পাত্র এবং পডের স্বাস্থ্যের মধ্যে দৃশ্যমানতা।


  3. অ্যাপ্লিকেশন পারফরম্যান্স মনিটরিং (APM): ব্যবহারকারী-স্পেস অ্যাপ্লিকেশনগুলিতে সূক্ষ্ম পর্যবেক্ষণযোগ্যতা এবং অ্যাপ্লিকেশন থ্রুপুট, ত্রুটির হার, লেটেন্সি এবং ট্রেসগুলিতে দৃশ্যমানতা।


  4. কাস্টম পর্যবেক্ষণযোগ্যতা: কাস্টম কোড না লিখে সহজেই উপলব্ধ নাও হতে পারে এমন অ্যাপ্লিকেশন বা ইনফ্রার জন্য নির্দিষ্ট কাস্টম মেট্রিক্সে দৃশ্যমানতা।


  5. উন্নত পর্যবেক্ষণযোগ্যতা: eBPF লাইভ ডিবাগিং , লো-ওভারহেড অ্যাপ্লিকেশন প্রোফাইলিং এবং সিস্টেম কল ট্রেসিংয়ের মতো উন্নত পর্যবেক্ষণযোগ্যতার ক্ষেত্রে ব্যবহার করা যেতে পারে।


প্রতিনিয়তই অবজারভেবিলিটিতে ইবিপিএফ-এর নতুন নতুন অ্যাপ্লিকেশন আসছে।


আজকের দিনে কীভাবে পর্যবেক্ষণ করা হয় তার মানে কী? ইবিপিএফ কি বিদ্যমান যন্ত্রের রূপগুলি প্রতিস্থাপন করতে পারে? চলুন বিদ্যমান বিকল্পগুলির সাথে তুলনা করা যাক।

ইবিপিএফ বনাম বিদ্যমান ইন্সট্রুমেন্টেশন পদ্ধতি

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


  1. এজেন্ট-ভিত্তিক ইন্সট্রুমেন্টেশন: টেলিমেট্রি ডেটা সংগ্রহের জন্য স্বাধীন সফ্টওয়্যার SDK/লাইব্রেরিগুলি অ্যাপ্লিকেশন কোড বা অবকাঠামো নোডগুলিতে একীভূত।


  1. সাইডকার প্রক্সি-ভিত্তিক ইন্সট্রুমেন্টেশন : সাইডকারগুলি হালকা ওজনের, স্বাধীন প্রক্রিয়া যা একটি অ্যাপ্লিকেশন বা পরিষেবার পাশাপাশি চলে। এগুলি মাইক্রোসার্ভিসেস এবং কন্টেইনার-ভিত্তিক আর্কিটেকচারে যেমন কুবারনেটেস জনপ্রিয়।


eBPF-ভিত্তিক ইন্সট্রুমেন্টেশন কীভাবে এজেন্ট এবং সাইডকারের সাথে তুলনা করে তার বিশদ তুলনার জন্য, এখানে দেখুন । নীচে একটি সারসংক্ষেপ দৃশ্য -



eBPF

এজেন্ট

সাইডকার

1. ডেটা দৃশ্যমানতা/গ্রানুয়ালিটি

উচ্চ (তবে কিছু ফাঁক)

উচ্চ

কম

2. অনুপ্রবেশ

কম (ব্যান্ডের বাইরে)

উচ্চ (ইনলাইন)

উচ্চ (ইনলাইন)

3. কর্মক্ষমতা ওভারহেড

কম

মধ্যম

উচ্চ

4. নিরাপত্তা এবং নিরাপত্তা

উচ্চ

মধ্যম

মধ্যম

5. বাস্তবায়ন সহজ

উচ্চ

কম

মধ্যম

6. রক্ষণাবেক্ষণ এবং আপডেটের সহজতা

উচ্চ

কম

মধ্যম

7. মাপযোগ্যতা

উচ্চ

মধ্যম

কম



আমরা দেখতে পাচ্ছি, eBPF প্রায় সমস্ত প্যারামিটার জুড়ে বিদ্যমান ইন্সট্রুমেন্টেশন পদ্ধতিগুলিকে ছাড়িয়ে যায়। এর বেশ কিছু সুবিধা রয়েছে-


  1. একযোগে সবকিছু কভার করতে পারে (অবকাঠামো, অ্যাপ্লিকেশন)

  2. কম অনুপ্রবেশকারী - eBPF কোড এজেন্টের মতো কাজের চাপ চালানোর ইনলাইন নয়, যা প্রতিবার কাজের চাপ চলার সময় চলে। ডেটা সংগ্রহ ব্যান্ডের বাইরে এবং স্যান্ডবক্সযুক্ত, তাই চলমান সিস্টেমে কোনও প্রভাব নেই৷

  3. কম পারফরম্যান্স ওভারহেড - eBPF নেটিভ মেশিন কোড হিসাবে চলে এবং কোন প্রসঙ্গ স্যুইচিং নেই।

  4. আরও নিরাপদ - যাচাইকরণের মতো অন্তর্নির্মিত নিরাপত্তা ব্যবস্থার কারণে।

  5. ইনস্টল করা সহজ - কোনো কোড পরিবর্তন বা পুনরায় আরম্ভ ছাড়াই ড্রপ করা যেতে পারে।

  6. রক্ষণাবেক্ষণ এবং আপডেট করা সহজ - আবার কোন কোড পরিবর্তন এবং পুনরায় চালু হয় না।

  7. আরও মাপযোগ্য - সহজ বাস্তবায়ন এবং রক্ষণাবেক্ষণ এবং নিম্ন কার্যক্ষমতা ওভারহেড দ্বারা চালিত


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


ভারসাম্য বজায় রেখে, বিদ্যমান ইন্সট্রুমেন্টেশন পদ্ধতিগুলির তুলনায় eBPF যে উল্লেখযোগ্য সুবিধাগুলি অফার করে, আমরা যুক্তিসঙ্গতভাবে আশা করতে পারি যে eBPF ডিফল্ট পরবর্তী প্রজন্মের ইন্সট্রুমেন্টেশন প্ল্যাটফর্ম হিসাবে আবির্ভূত হবে।

পর্যবেক্ষণযোগ্যতার জন্য প্রভাব

পর্যবেক্ষণ শিল্পের জন্য এর অর্থ কী? কি পরিবর্তন?

একটি পর্যবেক্ষণযোগ্য সমাধান কল্পনা করুন:


  • যে আপনি 5 মিনিটের মধ্যে কার্নেলে ড্রপ করতে পারেন

  • কোন কোড পরিবর্তন বা পুনরায় আরম্ভ

  • একযোগে সবকিছু কভার করে - অবকাঠামো, অ্যাপ্লিকেশন, সবকিছু

  • প্রায় শূন্য ওভারহেড আছে

  • অত্যন্ত নিরাপদ


এটিই ইবিপিএফ সম্ভব করে তোলে। আর সেই কারণেই প্রযুক্তি ঘিরে এত উত্তেজনা।


আমরা আশা করতে পারি পরবর্তী প্রজন্মের পর্যবেক্ষনযোগ্যতা সমাধান সকলের জন্য কোড এজেন্টের পরিবর্তে eBPF এর সাহায্যে করা হবে।


Datadog এবং NewRelic এর মতো ঐতিহ্যবাহী খেলোয়াড়রা ইতিমধ্যেই তাদের কোড-ভিত্তিক এজেন্ট পোর্টফোলিও বাড়ানোর জন্য eBPF-ভিত্তিক উপকরণ তৈরিতে বিনিয়োগ করছে। ইতিমধ্যে বেশ কয়েকটি পরবর্তী প্রজন্মের বিক্রেতা রয়েছে যা eBPF-এর উপর তৈরি করা হয়েছে, বিশেষ ব্যবহারের ক্ষেত্রে এবং জটিল পর্যবেক্ষণের জন্য উভয়ই সমাধান করে।


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


এই সমস্ত কিছুর জন্য এই স্থানটিতে প্রচুর পরিমাণে উদ্ভাবন করা উচিত এবং আগামী বছরগুলিতে পর্যবেক্ষণযোগ্যতাকে আরও নির্বিঘ্ন, নিরাপদ এবং সহজে বাস্তবায়ন করা উচিত।

কার ইবিপিএফ পর্যবেক্ষণযোগ্যতা ব্যবহার করা উচিত?

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


দ্বিতীয়ত, আপনি যদি বড় পরিসরে কাজ করেন, তাহলে eBPF-ভিত্তিক লাইটওয়েট এজেন্ট স্থিতাবস্থার চেয়ে নাটকীয় উন্নতি ঘটাবে। LinkedIn, Netflix, এবং Meta-এর মতো বিশাল পদচিহ্ন সহ প্রযুক্তি সংস্থাগুলিতে eBPF গ্রহণের ক্ষেত্রে এটি সম্ভবত একটি কারণ।


তৃতীয়ত, আপনি যদি প্রযুক্তির উপর ছোট হন। ক্ষমতা এবং একটি পর্যবেক্ষণযোগ্য সমাধান খুঁজছেন যা ইনস্টল এবং রক্ষণাবেক্ষণের জন্য প্রায় কোন প্রচেষ্টার প্রয়োজন হয় না, তারপর সরাসরি একটি eBPF-ভিত্তিক সমাধানের জন্য যান।

সারসংক্ষেপ

সংক্ষেপে, একটি উল্লেখযোগ্যভাবে উন্নত যন্ত্র ব্যবস্থার প্রস্তাব দিয়ে, eBPF এর সামনের বছরগুলিতে পর্যবেক্ষণযোগ্যতার জন্য আমাদের দৃষ্টিভঙ্গিকে মৌলিকভাবে পুনর্নির্মাণের সম্ভাবনা রয়েছে।


এই প্রবন্ধে আমরা প্রাথমিকভাবে ডেটা সংগ্রহ/ইন্সট্রুমেন্টেশনে eBPF-এর অ্যাপ্লিকেশন অন্বেষণ করেছি, ভবিষ্যতের অ্যাপ্লিকেশনগুলি eBPF ডেটা প্রসেসিং বা এমনকি ডেটা স্টোরেজ স্তরগুলিতে ব্যবহৃত হতে পারে। সম্ভাবনাগুলি বিস্তৃত এবং এখনও অনাবিষ্কৃত।

তথ্যসূত্র

  1. https://www.oreilly.com/library/view/learning-ebpf/9781098135119/ch01.html
  2. https://ebpf.io/
  3. https://ebpf.io/summit-2022.html
  4. https://github.com/microsoft/ebpf-for-windows
  5. https://events.linuxfoundation.org/wp-content/uploads/2022/10/elena-zannoni-tracing-tutorial-LF-2021.pdf


এছাড়াও এখানে প্রকাশিত.