Netto هي أداة لمراقبة الشبكة تعتمد على eBPF لنظام التشغيل Linux والتي تقيس تكلفة وحدة المعالجة المركزية لمكدس شبكة Linux.
NET_RX_SOFTIRQ
إلى وظائف الشبكة الأساسية من خلال ملفات التعريف المستندة إلى تتبع المكدس للنواةBPF_MAP_TYPE_TASK_STORAGE
) بشكل عام، لا يُنصح بإنشاء Netto كتطبيق مستقل؛ يجب على المستخدمين بدلاً من ذلك استخدام ملف Dockerfile
المقدم لإنشاء صورة حاوية من شأنها تبسيط نشر الأداة وإدارتها.
أنشئ Netto في صورة حاوية (الموسومة هنا بـ "netto") باستخدام:
docker build -t netto https://github.com/miolad/netto.git#perf-event-mmapable-array
يرجى ملاحظة أن الصورة الناتجة سوف تحتاج إلى القدرة CAP_BPF
CAP_SYS_ADMIN
، والتي تعني في معظم الإعدادات أنه يجب تشغيل الحاوية في الوضع --privileged
.
إذا كنت لا تزال تفضل إنشاء الأداة بشكل مستقل، فسوف تحتاج إلى ما يلي:
تجميع وتشغيل مع:
cargo xtask run [--release]
$ ./netto -h
eBPF-based network diagnosis tool for Linux
Usage: netto [OPTIONS]
Options:
-f, --frequency Perf-event's sampling frequency in Hz for the NET_RX_SOFTIRQ cost breakdown [default: 1000]
-a, --address Bind address for the web frontend [default: 0.0.0.0]
-p, --port Bind port for the web frontend [default: 8080]
--user-period User-space controller update period in ms [default: 500]
-l, --log-file Path to a log file to which measurements are to be saved. If logging is enabled by providing this argument, any other form of web interface will be disabled
-P, --prometheus Enable Prometheus logging in place of the web interface. The Prometheus-compatible endpoint will be available at `http://address:port`
-h, --help Print help
-V, --version Print version
افتراضيًا، يعرض Netto النتائج في الوقت الفعلي كصفحة ويب مدعومة بواسطة Wasm ويمكن الوصول إليها على http://address:port
. تعتبر هذه الواجهة مثالية لاستهلاك المحتوى أثناء إنتاجه، ولكنها لا توفر دعمًا جاهزًا لتخزين المقاييس المستخرجة للوصول المتأخر. عندما لا تكون مراقبة المضيف في الوقت الفعلي هي الاهتمام الأساسي، ومن أجل التكامل بشكل أفضل مع مجموعات مجموعة المقاييس الحالية (كما هو الحال في بيئات مراكز البيانات)، يوصى بدلاً من ذلك باستبدال واجهة الويب الأمامية المخصصة المضمنة بمصدر يستند إلى Prometheus باستخدام خيار سطر الأوامر -P
(أو --prometheus
).
في معظم الحالات، تتضمن الطريقة الموصى بها لتشغيل Netto أمرًا مشابهًا لما يلي:
docker run --name netto --privileged --restart unless-stopped -d -p 8080:8080 netto -P
أو باستخدام إدخال تكوين docker compose
المكافئ:
services:
netto:
build: https://github.com/miolad/netto.git#perf-event-mmapable-array
image: netto
container_name: netto
privileged: true
command: -P
restart: unless-stopped
...
من خلال تحديد الخيار -P
، يمكن استهداف Netto بواسطة مكشطة Prometheus والإشارة إليها في Grafana مباشرةً. يتوفر مثال للوحة المعلومات التي تعرض المقاييس الرئيسية التي جمعتها Netto باسم grafana_dashboard.json
(والتي تفترض أنه يتم استخدام المتغير "host" للتمييز بين الأجهزة المضيفة المختلفة الخاضعة للمراقبة من خلال علامة Prometheus "job"، التي سيتم تهيئتها في إعدادات Prometheus) .
مجلد | محتويات |
---|---|
images | الصور المستخدمة في README هذا |
netto | صندوق الصدأ الثنائي الرئيسي |
netto/src/bpf | برامج BPF-C |
metrics-common | صندوق مكتبة Bridge Rust للواجهة main وواجهة web-frontend |
web-frontend | الواجهة الأمامية لـ Rust WebAssembly |
www | الملفات الثابتة لواجهة الويب |
xtask | فائدة الصندوق الثنائي لإدارة التنسيق بين الصناديق الأخرى |