
واجهة مستخدم طرفية للمراقبة والفحص في الوقت الفعلي لبرامج وخرائط eBPF باستخدام bpftool، مما يتيح التصحيح المباشر والتحليل لبيانات المراقبة على مستوى النواة.
ebpfmon هي أداة لمراقبة برامج eBPF. صُممت لاستخدامها مع bpftool من نواة لينكس. ebpfmon هو تطبيق واجهة مستخدم طرفية (TUI) مكتوب بلغة Go يتيح لك مراقبة برامج eBPF في الوقت الفعلي.
يمكن بناء eBPFmon من المصدر أو يوجد إصدار مُجمّع منه متاح في الإصدارات
$ sudo apt install linux-tools-`uname -r` libelf-dev zlib1g-dev libcap-dev binutils-dev
$ sudo yum install bpftool elfutils-libelf-devel libcap-devel binutils-devel
$ sudo dnf install elfutils-libelf-devel libcap-devel zlib-devel binutils-devel bpftool
$ sudo apt install bpftool libelf-dev zlib1g-dev libcap-dev binutils-dev
$ ./ebpfmon
ملاحظة: يحتاج bpftool إلى صلاحيات الجذر، لذا سيقوم ebpfmon بتشغيل sudo bpftool ....这意味着您很可能需要 إدخال كلمة مرور sudo الخاصة بك.
أولاً وقبل كل شيء، هذه الأداة مكتوبة بلغة Go لذا يجب تثبيتها وتضمينها في متغير PATH الخاص بك. يجب أن تعمل على go 1.18 أو إصدار أحدث، رغم أنها قد تعمل على إصدارات أقدم. لكن ذلك لم يُختبر بعد.
بعد ذلك، تأكد من تثبيت التبعيات التالية.
قم ببساطة بتشغيل الأوامر التالية. سيؤدي ذلك إلى بناء الملف الثنائي ebpfmon في الدليل الحالي
$ git clone https://github.com/redcanaryco/ebpfmon.git
$ cd ebpfmon
$ make
العرض الرئيسي لـ ebpfmon هو عرض البرنامج. يعرض هذا العرض جميع برامج eBPF المحملة حاليًا على النظام. كل لوحة قابلة للتحديد ويمكنك التنقل بين اللوحات باستخدام مفتاح tab. في لوحة معينة، يمكنك استخدام مفاتيح الأسهم لتحريك النص أو اختيار القائمة لأعلى ولأسفل. بالنسبة للقوائم مثل البرامج أو الخرائط، يمكنك الضغط على Enter للتحديد. يؤدي تحديد برنامج إلى ملء اللوحات الأخرى بمعلومات عن ذلك البرنامج. يؤدي تحديد خريطة إلى التبديل إلى عرض إدخالات الخريطة التي تظهر الإدخالات الخاصة بتلك الخريطة.
توجد بعض اختصارات لوحة المفاتيح المتاحة في ebpfmon. هذه الاختصات مدرجة في صفحة المساعدة التي يمكن الوصول إليها بالضغط على مفتاح F1 أو مفتاح ?
للوصول إلى عرض البرنامج بغض النظر عن العرض الذي أنت فيه، يمكنك الضغط على Ctrl و e.
للوصول إلى عرض ميزات bpf بغض النظر عن العرض الذي أنت فيه، يمكنك الضغط على Ctrl و f.
للوصول إلى عرض الخريطة، ما عليك سوى تحديد خريطة (إن وجدت) لبرنامج eBPF الحالي. سيؤدي ذلك إلى ملء عرض الخريطة بإدخالات الخريطة. يمكنك حذف إدخالات الخريطة بالضغط على المفتاح d. في عرض الخريطة، يمكنك تنسيق بيانات إدخالات الخريطة بطرق متنوعة. للوصول إلى قسم التنسيق، اضغط على TAB أثناء وجودك في عرض قائمة إدخالات الخريطة. يمكنك بعد ذلك استخدام TAB للتنقل بين خيارات التنسيق المختلفة. للعودة إلى قائمة إدخالات الخريطة، اضغط على ESC
يمكنك أيضًا تعديل إدخالات الخريطة بالضغط على ENTER على اختيار. في عرض التعديل، يمكنك تعديل قيم البايت الخام لمفتاح/قيمة الخريطة. يمكنك تجاهل الأقواس المربعة
لإنهاء التطبيق، يمكنك الضغط على q أو Q
عمومًا، يجب أن يعيدك مفتاح ESC إلى العرض السابق الذي كنت فيه. أيضًا، إذا كنت في عرض المساعدة أو عرض الخطأ، فإن الضغط على escape يجب أن يعيدك إلى النافذة السابقة.
-bpftoolيسمح لك بتحديد المسار إلى الملف الثنائي bpftool. هذا مفيد إذا كان لديك بناء مخصص لـ bpftool تريد استخدامه. بشكل افتراضي، سيستخدم الملف الثنائي bpftool الخاص بالنظام. يمكنك أيضًا استخدام متغير بيئة. سيبحث بالترتيب التالي
-bpftool قد تم تحديدها في سطر الأوامرBPFTOOL_PATH مُعينًا.-logfileتسمح لك هذه الوسيطة بتحديد ملف للتسجيل إليه. بشكل افتراضي، سيسجل في ./log.txt. هذا ملف رائع للتحقق منه عند محاولة تصحيح مشكلات التطبيق، حيث سيسجل الأخطاء التي تحدث أثناء وقت التشغيل.
توجد بعض الاختبارات الأساسية المرتبطة بهذا المشروع.
لتشغيل الاختبارات، قم ببساطة بتشغيل الأمر التالي من الدليل الجذر للمشروع
$ go test ./...
إذا كنت تريد استخدام ملف bpftool الخاص بك، يمكنك تعيين متغير البيئة BPFTOOL_PATH إلى مسار ملف bpftool الخاص بك. إذا لم يتم تعيينه، فسيتم استخدام الملف الثنائي للنظام افتراضيًا.