eBPF एक प्रोग्रामिंग फ्रेमवर्क है जो हमें कर्नेल कोड को बदले बिना लिनक्स कर्नेल में सैंडबॉक्स्ड प्रोग्राम को सुरक्षित रूप से चलाने की अनुमति देता है। डिजाइन द्वारा eBPF प्रोग्राम अत्यधिक कुशल और सुरक्षित हैं - यह सुनिश्चित करने के लिए कर्नेल द्वारा सत्यापित किया जाता है कि वे ऑपरेटिंग सिस्टम की स्थिरता या सुरक्षा को जोखिम में नहीं डालते हैं। यह मूल रूप से लिनक्स के लिए विकसित किया गया था (और यह अभी भी है जहां तकनीक आज भी सबसे परिपक्व है)
डिकोडिंग eBPF पर्यवेक्षणीयता:
पिछले 2 वर्षों में क्लाउड-नेटिव समुदायों में eBPF के बारे में काफी चर्चा हुई है। KubeCon में eBPF एक था, और लोकप्रियता तेजी से बढ़ रही है, Google और Netflix जैसी कंपनियां वर्षों से रही हैं, और हर समय नए उपयोग के मामले सामने आ रहे हैं। विशेष रूप से अवलोकन में, eBPF के गेम चेंजर होने की उम्मीद है।
तो चलिए eBPF पर नजर डालते हैं - तकनीक क्या है, यह अवलोकन क्षमता को कैसे प्रभावित कर रही है, यह मौजूदा अवलोकनीय प्रथाओं से कैसे तुलना करती है, और भविष्य में क्या हो सकता है?
ईबीपीएफ वास्तव में क्या है?
eBPF एक प्रोग्रामिंग फ्रेमवर्क है जो हमें कर्नेल कोड को बदले बिना लिनक्स कर्नेल में सैंडबॉक्स्ड प्रोग्राम को सुरक्षित रूप से चलाने की अनुमति देता है।
यह मूल रूप से लिनक्स के लिए विकसित किया गया था (और यह अभी भी है जहां तकनीक आज भी सबसे परिपक्व है), लेकिन माइक्रोसॉफ्ट तेजी से विकसित कर रहा है।
डिजाइन द्वारा eBPF प्रोग्राम अत्यधिक कुशल और सुरक्षित हैं - यह सुनिश्चित करने के लिए कर्नेल द्वारा सत्यापित किया जाता है कि वे ऑपरेटिंग सिस्टम की स्थिरता या सुरक्षा को जोखिम में नहीं डालते हैं।
तो ईबीपीएफ एक बड़ी बात क्यों है?
इसे समझने के लिए हमें यूजर स्पेस और कर्नेल स्पेस को समझने की जरूरत है।
उपयोगकर्ता स्थान वह जगह है जहां सभी एप्लिकेशन चलते हैं। कर्नेल स्थान उपयोगकर्ता स्थान और भौतिक हार्डवेयर के बीच बैठता है। यूजर स्पेस में एप्लिकेशन सीधे हार्डवेयर तक नहीं पहुंच सकते हैं। इसके बजाय, वे कर्नेल को सिस्टम कॉल करते हैं, जो तब हार्डवेयर तक पहुँचता है।
सभी मेमोरी एक्सेस, फाइल रीड/राइट, और नेटवर्क ट्रैफिक कर्नेल के माध्यम से जाते हैं। कर्नेल समवर्ती प्रक्रियाओं का प्रबंधन भी करता है।
मूल रूप से, सब कुछ कर्नेल के माध्यम से जाता है (नीचे चित्र देखें)। और eBPF कर्नेल की कार्यक्षमता बढ़ाने के लिए एक सुरक्षित, सुरक्षित तरीका प्रदान करता है।
ऐतिहासिक रूप से, स्पष्ट कारणों से, कर्नेल स्रोत कोड या ऑपरेटिंग सिस्टम परत में कुछ भी बदलना अति कठिन रहा है।
लिनक्स कर्नेल में होती हैं, और किसी भी परिवर्तन को एक विचार से व्यापक रूप से उपलब्ध होने में कई साल लगते हैं। सबसे पहले, Linux समुदाय को इससे सहमत होना होगा। फिर, इसे आधिकारिक लिनक्स रिलीज़ का हिस्सा बनना होगा। फिर, कुछ महीनों के बाद, इसे Red Hat और Ubuntu जैसे वितरणों द्वारा चुना जाता है, जो इसे व्यापक दर्शकों तक ले जाते हैं।
तकनीकी रूप से, कोई कर्नेल मॉड्यूल को अपने कर्नेल में लोड कर सकता है और सीधे परिवर्तन कर सकता है, लेकिन यह बहुत अधिक जोखिम वाला है और इसमें जटिल कर्नेल-स्तरीय प्रोग्रामिंग शामिल है, इसलिए लगभग सार्वभौमिक रूप से इससे बचा जाता है।
ईबीपीएफ साथ आता है और इसे हल करता है - और कर्नेल में प्रोग्राम संलग्न करने और चलाने के लिए एक सुरक्षित और कुशल तंत्र प्रदान करता है।
आइए देखें कि ईबीपीएफ सुरक्षा और प्रदर्शन दोनों को कैसे सुनिश्चित करता है।
अत्यधिक सुरक्षित
कठोर सत्यापन - किसी भी eBPF प्रोग्राम को कर्नेल में लोड करने से पहले, इसे eBPF सत्यापनकर्ता द्वारा सत्यापित किया जाता है, जो सुनिश्चित करता है कि कोड बिल्कुल सुरक्षित है - जैसे, कोई हार्ड लूप नहीं, अमान्य मेमोरी एक्सेस, असुरक्षित संचालन।
सैंडबॉक्स्ड - eBPF प्रोग्राम कर्नेल के भीतर एक मेमोरी-पृथक सैंडबॉक्स में चलाए जाते हैं, जो अन्य कर्नेल घटकों से अलग होते हैं। यह कर्नेल मेमोरी, डेटा स्ट्रक्चर्स और कर्नेल सोर्स कोड तक अनधिकृत पहुंच को रोकता है।
सीमित संचालन - eBPF प्रोग्राम को आमतौर पर C भाषा के एक छोटे उपसमुच्चय - एक प्रतिबंधित निर्देश सेट में लिखा जाना होता है। यह उन परिचालनों को सीमित करता है जो eBPF प्रोग्राम कर सकते हैं, जिससे सुरक्षा कमजोरियों का जोखिम कम हो जाता है।
उच्च प्रदर्शन / हल्के
नेटिव मशीन कोड के रूप में चलाएँ - eBPF प्रोग्राम CPU पर नेटिव मशीन निर्देशों के रूप में चलाए जाते हैं। इससे तेजी से निष्पादन और बेहतर प्रदर्शन होता है।
कोई संदर्भ स्विच नहीं - नियमित रूप से एक नियमित अनुप्रयोग उपयोगकर्ता-स्थान और कर्नेल-स्थान के बीच नियमित रूप से संदर्भ-स्विच करता है, जो संसाधन गहन है। eBPF प्रोग्राम, जैसा कि वे कर्नेल परत में चलते हैं, सीधे कर्नेल डेटा संरचनाओं और संसाधनों तक पहुँच सकते हैं।
ईवेंट-संचालित - eBPF प्रोग्राम आमतौर पर केवल विशिष्ट कर्नेल ईवेंट बनाम हमेशा चालू रहने की प्रतिक्रिया में चलते हैं। यह ओवरहेड को कम करता है।
हार्डवेयर के लिए अनुकूलित - eBPF प्रोग्राम निष्पादन से ठीक पहले कर्नेल के JIT (जस्ट-इन-टाइम) कंपाइलर द्वारा मशीन कोड में संकलित किए जाते हैं, इसलिए कोड उस विशिष्ट हार्डवेयर के लिए अनुकूलित होता है जिस पर वह चलता है।
तो ईबीपीएफ प्रोग्रामिंग के लिए कर्नेल में एक सुरक्षित और कुशल हुक प्रदान करता है। और यह देखते हुए कि सब कुछ कर्नेल के माध्यम से जाता है, इससे कई नई संभावनाएं खुलती हैं जो अब तक संभव नहीं थीं।
यह अभी एक बड़ी बात क्यों है?
ईबीपीएफ के आसपास की तकनीक लंबे समय से विकसित हुई है और इसे बनाने में ~30 साल लगे हैं।
पिछले 7-8 वर्षों में, eBPF का उपयोग कई बड़ी कंपनियों द्वारा बड़े पैमाने पर किया गया है और अब हम एक ऐसे युग में प्रवेश कर रहे हैं जहाँ eBPF का उपयोग मुख्यधारा बन रहा है। Linux के सह-निर्माता और eBPF के सह-अनुरक्षक देखें।
eBPF - एक संक्षिप्त इतिहास
1993 - लॉरेंस बर्कले नेशनल लैब का एक पैकेट फ़िल्टरिंग के लिए कर्नेल एजेंट का उपयोग करके अन्वेषण करता है। यहीं से BPF ("बर्कले पैकेट फ़िल्टर") नाम आता है।
1997 - बीपीएफ को आधिकारिक तौर पर लिनक्स कर्नेल (संस्करण 2.1.75) के हिस्से के रूप में पेश किया गया।
1997-2014 - बीपीएफ क्षमताओं में सुधार, स्थिरता और विस्तार के लिए कई विशेषताएं जोड़ी गईं।
2014 - एक महत्वपूर्ण अद्यतन पेश किया गया, जिसे "विस्तारित बर्कले पैकेट फ़िल्टर" (eBPF) कहा जाता है। यह संस्करण BPF तकनीक में बड़े बदलाव करता है और इसे अधिक व्यापक रूप से प्रयोग करने योग्य बनाता है - इसलिए शब्द "विस्तारित"
यह रिलीज़ बड़ा क्यों था, यह था कि इसने कर्नेल की कार्यक्षमता को बढ़ाना आसान बना दिया।
एक प्रोग्रामर अधिक या कम कोड कर सकता है जैसे कि वे एक नियमित आवेदन करेंगे - और आसपास के eBPF बुनियादी ढांचे निम्न-स्तरीय सत्यापन, सुरक्षा और दक्षता का ख्याल रखते हैं। एक संपूर्ण सहायक पारिस्थितिकी तंत्र और eBPF के चारों ओर मचान इसे संभव बनाता है (नीचे चित्र देखें)।
स्रोत: इससे भी बेहतर, eBPF प्रोग्राम को बिना किसी पुनरारंभ के कर्नेल से लोड और अनलोड किया जा सकता है। यह सब अचानक व्यापक रूप से अपनाने और आवेदन करने की अनुमति देता है।
उत्पादन प्रणालियों में व्यापक रूप से अपनाना
eBPF की लोकप्रियता पिछले 7-8 वर्षों में विस्फोट हो गई है, कई बड़ी कंपनियों ने इसे बड़े पैमाने पर उत्पादन प्रणालियों में उपयोग किया है।
2016 तक, नेटफ्लिक्स ट्रेसिंग के लिए व्यापक रूप से eBPF का उपयोग कर रहा था। , जिन्होंने इसे लागू किया, व्यापक रूप से ईबीपीएफ पर एक प्राधिकरण के रूप में बुनियादी ढांचे और संचालन हलकों में जाना जाने लगा।
2017 - Facebook ने उनके eBPF-आधारित लोड बैलेंसर, ओपन-सोर्स किया। 2017 से का हर एक पैकेट eBPF से होकर गुज़रा है।
2020 - Google ने eBPF को कुबेरनेट्स की पेशकश का हिस्सा बनाया। eBPF अब GKE की शक्ति प्रदान करता है। अब तक और जैसी कंपनियों में भी व्यापक उद्यम अपनाने लगे हैं।
2021 - Facebook, Google, Netflix, Microsoft और Isovalent eBPF तकनीक के विकास का प्रबंधन करने के लिए घोषणा करने के लिए एक साथ आए।
अब eBPF का उपयोग करने वाली हजारों कंपनियाँ हैं और हर साल सैकड़ों eBPF परियोजनाएँ आ रही हैं जो विभिन्न उपयोग मामलों की खोज कर रही हैं।
eBPF अब लिनक्स कर्नेल के भीतर एक अलग सबसिस्टम है जिसका समर्थन करने के लिए एक विस्तृत समुदाय है। कई नए परिवर्धन के साथ प्रौद्योगिकी का काफी विस्तार हुआ है।
तो हम ईबीपीएफ के साथ क्या कर सकते हैं?
ईबीपीएफ के लिए सबसे आम उपयोग के मामले 3 क्षेत्रों में हैं -
नेटवर्किंग
सुरक्षा
observability
सुरक्षा और नेटवर्किंग ने व्यापक रूप से अपनाए जाने और अनुप्रयोग को देखा है, जो कि जैसी परियोजनाओं से प्रेरित है। इसकी तुलना में, eBPF- आधारित प्रेक्षणीयता पेशकश पहले अपने विकास में हैं और अभी शुरू हो रही हैं।
आइए पहले सुरक्षा और नेटवर्किंग में उपयोग के मामलों को देखें।
सुरक्षा
सुरक्षा eBPF के लिए अत्यधिक लोकप्रिय उपयोग मामला है। ईबीपीएफ का उपयोग करते हुए, प्रोग्राम कर्नेल स्तर पर होने वाली हर चीज का निरीक्षण कर सकते हैं, अप्रत्याशित व्यवहार की जांच करने के लिए घटनाओं को तेज गति से संसाधित कर सकते हैं, और अन्य की तुलना में अधिक तेजी से अलर्ट बढ़ा सकते हैं।
उदाहरण के लिए -
बड़े पैमाने पर घुसपैठ का पता लगाने के लिए eBPF का उपयोग करता है
कंटेनर सुरक्षा लागू करने के लिए eBPF का उपयोग करता है
कई अब डेटा एकत्र करने और निगरानी के लिए eBPF का उपयोग करते हैं।
नेटवर्किंग
नेटवर्किंग एक अन्य व्यापक रूप से लागू उपयोग मामला है। ईबीपीएफ परत पर होने से व्यापक नेटवर्क पर्यवेक्षण की अनुमति मिलती है, जैसे स्रोत और गंतव्य आईपी के साथ-साथ सभी हॉप्स सहित पूर्ण नेटवर्क पथ में दृश्यता। ईबीपीएफ कार्यक्रमों के साथ, कोई उच्च-मात्रा नेटवर्क घटनाओं को संसाधित कर सकता है और बहुत कम ओवरहेड के साथ कर्नेल के भीतर सीधे नेटवर्क पैकेट में हेरफेर कर सकता है।
यह विभिन्न नेटवर्किंग उपयोग मामलों जैसे लोड संतुलन, DDoS रोकथाम, ट्रैफ़िक को आकार देने और सेवा की गुणवत्ता (QoS) की अनुमति देता है।
डीडीओएस हमलों का पता लगाने और रोकने के लिए ईबीपीएफ का उपयोग करता है, नेटवर्क प्रदर्शन को प्रभावित किए बिना संसाधित करता है।
मेटा का eBPF-आधारित सभी Facebook के लिए लोड-बैलेंसिंग करता है
observability
अब तक यह स्पष्ट हो गया होगा कि ईबीपीएफ प्रेक्षणीयता में कैसे उपयोगी हो सकता है।
सब कुछ कर्नेल से होकर गुजरता है। और eBPF कर्नेल से सब कुछ देखने के लिए अत्यधिक प्रदर्शनकारी और सुरक्षित तरीका प्रदान करता है।
आइए हम प्रेक्षणीयता में गहराई से गोता लगाएँ और इस प्रौद्योगिकी के निहितार्थों को देखें।
ईबीपीएफ प्रत्यक्षता को कैसे प्रभावित करता है?
इसे एक्सप्लोर करने के लिए, आइए eBPF ब्रह्मांड से बाहर निकलकर ऑब्जर्वेबिलिटी ब्रह्मांड में जाएं और देखें कि हमारे मानक ऑब्जर्वेबिलिटी समाधान क्या हैं।
किसी भी अवलोकनीय समाधान के 4 प्रमुख घटक होते हैं -
डेटा संग्रह - अनुप्रयोगों और बुनियादी ढांचे से टेलीमेट्री डेटा प्राप्त करना
डाटा प्रोसेसिंग - एकत्रित डेटा पर फ़िल्टरिंग, इंडेक्सिंग और कंप्यूटेशंस करना
डेटा संग्रहण - डेटा का अल्पकालिक और दीर्घकालिक भंडारण
उपयोगकर्ता अनुभव परत - यह निर्धारित करना कि उपयोगकर्ता द्वारा डेटा का उपयोग कैसे किया जाता है
इसमें से, जो eBPF प्रभावित करता है (आज तक), वास्तव में सिर्फ डेटा संग्रह परत है - eBPF का उपयोग करके सीधे कर्नेल से टेलीमेट्री डेटा का आसान संग्रह।
इसलिए जब हम आज "eBPF प्रेक्षणशीलता" कहते हैं, तो हमारा मतलब यह है कि उपकरण लगाने के अन्य तरीकों का उपयोग करने के बजाय टेलीमेट्री डेटा एकत्र करने के लिए उपकरण तंत्र के रूप में eBPF का उपयोग किया जाता है। अवलोकन समाधान के अन्य घटक अप्रभावित रहते हैं।
ईबीपीएफ निगरानी कैसे काम करती है
ईबीपीएफ अवलोकन के पीछे अंतर्निहित तंत्र को पूरी तरह से समझने के लिए, हमें हुक की अवधारणा को समझने की जरूरत है।
जैसा कि हमने पहले देखा, eBPF प्रोग्राम मुख्य रूप से इवेंट-संचालित होते हैं - यानी, वे किसी भी समय किसी विशिष्ट घटना के होने पर ट्रिगर हो जाते हैं। उदाहरण के लिए, हर बार एक फ़ंक्शन कॉल किया जाता है, अवलोकन उद्देश्यों के लिए कुछ डेटा कैप्चर करने के लिए एक eBPF प्रोग्राम को कॉल किया जा सकता है।
सबसे पहले, ये हुक कर्नेल स्पेस या यूजर स्पेस में हो सकते हैं। इसलिए eBPF का उपयोग यूजर स्पेस एप्लिकेशन और साथ ही कर्नेल-स्तरीय घटनाओं दोनों की निगरानी के लिए किया जा सकता है।
दूसरा, ये हुक या तो पूर्व-निर्धारित/स्थैतिक हो सकते हैं या चल रहे सिस्टम में गतिशील रूप से डाले जा सकते हैं (बिना पुनरारंभ किए!)
चार अलग-अलग eBPF तंत्र इनमें से प्रत्येक के लिए अनुमति देते हैं (नीचे चित्र देखें)
पूर्व निर्धारित/मैनुअल
गतिशील
गुठली
कर्नेल ट्रेसप्वाइंट
kprobe
उपयोक्ता स्थान
यूएसडीटी
uprobes
स्टेटिक और डायनेमिक eBPF यूजर स्पेस और कर्नेल स्पेस में हुक करता है
कर्नेल ट्रेसप्वाइंट - कर्नेल डेवलपर्स द्वारा पूर्व-परिभाषित घटनाओं में हुक करने के लिए उपयोग किया जाता है (TRACE_EVENT मैक्रोज़ के साथ)
USDT - एप्लिकेशन कोड में डेवलपर्स द्वारा निर्धारित पूर्वनिर्धारित ट्रेसप्वाइंट में हुक करने के लिए उपयोग किया जाता है
Kprobes (कर्नेल जांच) - रनटाइम पर कर्नेल कोड के किसी भी भाग में गतिशील रूप से हुक करने के लिए उपयोग किया जाता है
Uprobes (उपयोगकर्ता जांच) - रनटाइम पर उपयोगकर्ता-स्थान एप्लिकेशन के किसी भी हिस्से में गतिशील रूप से हुक करने के लिए उपयोग किया जाता है
कर्नेल स्थान में कई पूर्व-निर्धारित हुक हैं जो आसानी से एक ईबीपीएफ प्रोग्राम संलग्न कर सकते हैं (उदाहरण के लिए, सिस्टम कॉल, फ़ंक्शन एंट्री/निकास, नेटवर्क इवेंट्स, कर्नेल ट्रेसपॉइंट्स)। इसी तरह यूजर स्पेस में, कई लैंग्वेज रनटाइम, डेटाबेस सिस्टम और सॉफ्टवेयर स्टैक लिनक्स बीसीसी टूल्स के लिए पूर्वनिर्धारित हुक को उजागर करते हैं जिसमें eBPF प्रोग्राम हुक कर सकते हैं।
लेकिन क्या अधिक दिलचस्प है kprobes और uprobes। क्या होगा अगर उत्पादन में कुछ टूट रहा है और मेरे पास पर्याप्त जानकारी नहीं है और मैं गतिशील रूप से रनटाइम पर उपकरण जोड़ना चाहता हूं? यही वह जगह है जहाँ kprobes और uprobes शक्तिशाली अवलोकन के लिए अनुमति देते हैं।
उदाहरण के लिए, अपरोब का उपयोग करके, कोई एप्लिकेशन के कोड को संशोधित किए बिना, रनटाइम पर एक विशिष्ट फ़ंक्शन में हुक कर सकता है। जब भी फ़ंक्शन निष्पादित किया जाता है, आवश्यक डेटा कैप्चर करने के लिए एक ईबीपीएफ प्रोग्राम ट्रिगर किया जा सकता है। यह डिबगिंग जैसी रोमांचक संभावनाओं की अनुमति देता है।
अब जब हम जानते हैं कि ईबीपीएफ के साथ अवलोकन कैसे काम करता है, आइए उपयोग के मामलों को देखें।
eBPF पर्यवेक्षण उपयोग के मामले
eBPF का उपयोग लगभग सभी सामान्य मौजूदा अवलोकनीय उपयोग-मामलों के लिए किया जा सकता है, और इसके अलावा नई संभावनाओं को खोलता है।
सिस्टम और इन्फ्रास्ट्रक्चर मॉनिटरिंग: eBPF सिस्टम-स्तरीय घटनाओं जैसे CPU उपयोग, मेमोरी आवंटन, डिस्क I / O और नेटवर्क ट्रैफ़िक की गहन निगरानी की अनुमति देता है। उदाहरण के लिए, ।
कंटेनर और कुबेरनेट्स मॉनिटरिंग: कुबेरनेट्स-विशिष्ट मेट्रिक्स, संसाधन उपयोग और व्यक्तिगत कंटेनरों और पॉड्स की स्थिति में दृश्यता।
एप्लिकेशन परफॉर्मेंस मॉनिटरिंग (APM): यूजर-स्पेस एप्लिकेशन में बारीक अवलोकन और एप्लिकेशन थ्रूपुट, त्रुटि दर, विलंबता और निशान में दृश्यता।
कस्टम अवलोकन योग्यता: एप्लिकेशन या इन्फ्रा के लिए विशिष्ट कस्टम मेट्रिक्स में दृश्यता जो कस्टम कोड लिखे बिना आसानी से उपलब्ध नहीं हो सकती है।
उन्नत पर्यवेक्षणीयता: eBPF का उपयोग , और जैसे उन्नत पर्यवेक्षणीय उपयोग मामलों के लिए किया जा सकता है।
हर दिन ऑब्जर्वेबिलिटी में eBPF के नए एप्लिकेशन सामने आ रहे हैं।
इसका क्या मतलब है कि आज अवलोकन कैसे किया जाता है? क्या eBPF के इंस्ट्रूमेंटेशन के मौजूदा रूपों को बदलने की संभावना है? आइए मौजूदा विकल्पों के साथ तुलना करें।
eBPF बनाम मौजूदा इंस्ट्रूमेंटेशन तरीके
आज, ईबीपीएफ के अलावा, अवलोकन के लिए उपकरण अनुप्रयोगों और आधारभूत संरचना के दो मुख्य तरीके हैं।
एजेंट-आधारित इंस्ट्रूमेंटेशन: टेलीमेट्री डेटा एकत्र करने के लिए स्वतंत्र सॉफ्टवेयर एसडीके/लाइब्रेरी को एप्लिकेशन कोड या इंफ्रास्ट्रक्चर नोड्स में एकीकृत किया गया है।
साइडकार प्रॉक्सी-आधारित इंस्ट्रूमेंटेशन : साइडकार हल्की, स्वतंत्र प्रक्रियाएँ हैं जो किसी एप्लिकेशन या सेवा के साथ चलती हैं। वे कुबेरनेट्स जैसे माइक्रोसर्विसेज और कंटेनर-आधारित आर्किटेक्चर में लोकप्रिय हैं।
eBPF-आधारित इंस्ट्रूमेंटेशन एजेंट और साइडकार की तुलना में कैसे तुलना करता है, इसकी विस्तृत तुलना के लिए, । नीचे एक सारांश दृश्य है -
ईबीपीएफ
एजेंटों
साइडकार
1. डेटा दृश्यता/ग्रैनुअलिटी
उच्च (लेकिन कुछ अंतराल)
उच्च
कम
2. घुसपैठ
कम (आउट-ऑफ-बैंड)
उच्च (इनलाइन)
उच्च (इनलाइन)
3. प्रदर्शन ओवरहेड
कम
मध्यम
उच्च
4. सुरक्षा और सुरक्षा
उच्च
मध्यम
मध्यम
5. कार्यान्वयन में आसानी
उच्च
कम
मध्यम
6. रखरखाव और अपडेट में आसानी
उच्च
कम
मध्यम
7. मापनीयता
उच्च
मध्यम
कम
जैसा कि हम देख सकते हैं, eBPF लगभग सभी मापदंडों में मौजूदा इंस्ट्रूमेंटेशन विधियों को बेहतर बनाता है। कई फायदे हैं-
एक बार में सब कुछ कवर कर सकते हैं (बुनियादी ढांचा, अनुप्रयोग)
कम दखलंदाजी - eBPF कोड एजेंटों की तरह वर्कलोड चलाने की इनलाइन नहीं है, जो वर्कलोड चलने पर हर बार चलते हैं। डेटा संग्रह आउट-ऑफ़-बैंड और सैंडबॉक्स्ड है, इसलिए रनिंग सिस्टम पर कोई प्रभाव नहीं पड़ता है।
कम प्रदर्शन ओवरहेड - ईबीपीएफ मूल मशीन कोड के रूप में चलता है और कोई संदर्भ स्विचिंग नहीं है।
अधिक सुरक्षित - सत्यापन जैसे अंतर्निहित सुरक्षा उपायों के कारण।
स्थापित करने में आसान - बिना किसी कोड परिवर्तन या पुनरारंभ के गिराया जा सकता है।
बनाए रखने और अपडेट करने में आसान - फिर से कोई कोड परिवर्तन और पुनरारंभ नहीं होता है।
अधिक स्केलेबल - आसान कार्यान्वयन और रखरखाव, और कम प्रदर्शन ओवरहेड द्वारा संचालित
विपक्ष के संदर्भ में, ईबीपीएफ अवलोकन के साथ प्राथमिक अंतर आज वितरित अनुरेखण में है ( , लेकिन उपयोग का मामला अभी भी प्रारंभिक अवस्था में है)।
संतुलन में, मौजूदा इंस्ट्रूमेंटेशन विधियों पर eBPF द्वारा प्रदान किए जाने वाले महत्वपूर्ण लाभों को देखते हुए, हम उचित रूप से उम्मीद कर सकते हैं कि eBPF अगली पीढ़ी के इंस्ट्रूमेंटेशन प्लेटफॉर्म के रूप में उभरेगा।
अवलोकन के लिए निहितार्थ
अवलोकन उद्योग के लिए इसका क्या मतलब है? कौन सा शुल्क? एक अवलोकनीय समाधान की कल्पना करें:
जिसे आप कर्नेल में 5 मिनट में छोड़ सकते हैं
कोई कोड परिवर्तन या पुनरारंभ नहीं
एक ही बार में सब कुछ कवर करता है - अवसंरचना, अनुप्रयोग, सब कुछ
लगभग शून्य ओवरहेड है
अत्यधिक सुरक्षित है
ईबीपीएफ यही संभव बनाता है। और यही कारण है कि तकनीक को लेकर इतना उत्साह है।
हम उम्मीद कर सकते हैं कि अगली पीढ़ी के ऑब्जर्वेबिलिटी सॉल्यूशंस को कोड एजेंटों के बजाय ईबीपीएफ के साथ इंस्ट्रूमेंट किया जाएगा।
डेटाडॉग और न्यूरेलिक जैसे पारंपरिक खिलाड़ी पहले से ही अपने कोड-आधारित एजेंट पोर्टफोलियो को बढ़ाने के लिए ईबीपीएफ-आधारित इंस्ट्रूमेंटेशन बनाने में निवेश कर रहे हैं। इस बीच eBPF पर कई अगली पीढ़ी के वेंडर बनाए गए हैं, जो और दोनों को हल करते हैं।
जबकि पारंपरिक खिलाड़ियों को कई वर्षों में भाषा और प्रत्येक बुनियादी ढांचे के घटक के लिए अलग-अलग कोड एजेंटों की भाषा का निर्माण करना पड़ता है, नए खिलाड़ी eBPF के साथ कुछ महीनों में समान कवरेज प्राप्त कर सकते हैं। इससे उन्हें डाटा प्रोसेसिंग, यूजर एक्सपीरियंस और यहां तक कि जैसी मूल्य श्रृंखला को ऊपर ले जाने पर भी ध्यान केंद्रित करने की अनुमति मिलती है। इसके अलावा, नए उपयोग के मामलों, मात्रा और आवृत्ति का समर्थन करने के लिए उनकी डेटा प्रोसेसिंग और उपयोगकर्ता अनुभव परतें भी ग्राउंड-अप बनाई गई हैं।
यह सब इस स्थान में बड़ी मात्रा में नवाचार को प्रेरित करता है और आने वाले वर्षों में अवलोकन को अधिक सहज, सुरक्षित और लागू करने में आसान बनाता है।
ईबीपीएफ पर्यवेक्षणीयता का उपयोग किसे करना चाहिए?
सबसे पहले, यदि आप आधुनिक क्लाउड-देशी वातावरण (कुबेरनेट्स, माइक्रोसर्विसेज) में हैं, तो eBPF- आधारित और एजेंट-आधारित दृष्टिकोणों के बीच अंतर सबसे अधिक दिखाई देता है (प्रदर्शन ओवरहेड, सुरक्षा, स्थापना में आसानी आदि)।
दूसरा, यदि आप बड़े पैमाने पर काम कर रहे हैं, तो ईबीपीएफ-आधारित हल्के एजेंट यथास्थिति पर नाटकीय सुधार लाएंगे। यह संभवतः एक कारण है कि लिंक्डइन, नेटफ्लिक्स और मेटा जैसे बड़े पदचिह्न वाली प्रौद्योगिकी कंपनियों में eBPF को अपनाने की दर सबसे अधिक रही है।
तीसरा, यदि आप टेक पर कम हैं। क्षमता और एक अवलोकन समाधान की तलाश कर रहे हैं जिसे स्थापित करने और बनाए रखने के लिए लगभग कोई प्रयास नहीं करना पड़ता है, फिर सीधे eBPF- आधारित समाधान के लिए जाएं।
सारांश
संक्षेप में, महत्वपूर्ण रूप से बेहतर इंस्ट्रूमेंटेशन मैकेनिज्म की पेशकश करके, eBPF में आने वाले वर्षों में अवलोकन के लिए हमारे दृष्टिकोण को मौलिक रूप से नया रूप देने की क्षमता है।
जबकि इस लेख में हमने मुख्य रूप से डेटा संग्रह/इंस्ट्रूमेंटेशन में eBPF के एप्लिकेशन की खोज की, भविष्य के एप्लिकेशन डेटा प्रोसेसिंग या यहां तक कि डेटा स्टोरेज लेयर में उपयोग किए गए eBPF को देख सकते हैं। संभावनाएं व्यापक हैं और अभी तक अनछुई हैं।