الرئيسية
» مسؤول الشبكة
»
كيفية مراقبة مقاييس Jitsi Videobridge باستخدام Prometheus و Grafana
كيفية مراقبة مقاييس Jitsi Videobridge باستخدام Prometheus و Grafana
عندما يبدأ اجتماع Jitsi بالتقطع، قد يلاحظ المسؤول شكاوى حول تقطع الصوت أو توقف الفيديو، لكن لا توجد لديه طريقة سريعة لتحديد ما إذا كان الجسر مُحمّلاً بشكل زائد، أو غير قابل للوصول، أو ببساطة يحمل حركة مرور أكثر من المعتاد. يوفر Jitsi Videobridge (JVB) مقاييس تشغيلية يمكن لـ Prometheus جمعها وعرضها بواسطة Grafana. يشرح هذا الدليل عملية الإعداد، بدءًا من فحص نقطة النهاية المحلية وانتهاءً بلوحة تحكم يمكنك التحقق منها.
مثال توضيحي: تخيل مؤسسة صغيرة تُشغّل برنامج JVB واحدًا على خادم Linux، بالإضافة إلى Prometheus وGrafana على نفس الخادم. هذا مثال توضيحي فقط، وليس تقريرًا عن عملية نشر أو اختبار حقيقية. إذا كانت خدماتك تعمل في حاويات منفصلة أو على خوادم مختلفة، فاستبدل عناوينها الداخلية المتاحة، مع الحفاظ على قيود الشبكة نفسها.
ما ستراقبه
تصف وثائق مشروع JVB الحالية نقطة نهاية Prometheus/OpenMetrics مدمجة على /metricsواجهة HTTP الخاصة بالجسر. وتعرض إحصائيات مثل المؤتمرات النشطة، ونقاط النهاية، ومعدل نقل البيانات الوارد والصادر، ومعدلات الحزم، وضغط الجسر. لا تتضمن معلومات Prometheus بالضرورة جميع الإحصائيات المتاحة عبر تنسيقات التقارير الأخرى لـ JVB، لذا يُرجى اعتبار نقطة النهاية التي يوفرها الإصدار المُثبّت لديك هي المصدر الموثوق. يُمكّن التكوين المرجعي حاليًا مورد Prometheus REST ويربط واجهة HTTP الخاصة بـ loopback؛ ومنفذ HTTP الخاص الافتراضي الموثق هو 8080. قد تختلف الحزم وقوالب النشر القديمة.
يقوم بروميثيوس بجمع وتخزين السلاسل الزمنية. يتصل غرافانا ببروميثيوس كمصدر بيانات ويستعلم عن تلك السلاسل المخزنة. لا يتطلب مسار مقاييس JVB المباشر هذا مُصدِّر جيتسي منفصل. راجع إحصائيات جيتسي ووثائق نقطة نهاية بروميثيوس ، وتكوين واجهة HTTP الخاصة به ، والتكوين المرجعي . قد تتغير هذه الملفات المصدرية؛ لذا تحقق من التكوين والإصدار المُثبَّت على جسرك قبل تطبيق القيم النموذجية.
الخطوة 1: تأكد من أن JVB يعرض المقاييس
على جهاز JVB، حدد أولاً التكوين النشط. تستخدم حزمة Debian أو Ubuntu الشائعة ملفًا معينًا /etc/jitsi/videobridge/jvb.conf، لكن Jitsi يشير إلى أن الملف الفعلي هو المسار الذي يتم تمريره إلى عملية الربط. قد تقوم عمليات نشر الحاويات بتحميل تكوين مُولّد بدلاً من ذلك. لا تفترض أن ملفًا نموذجيًا هو الملف الذي تقرأه الخدمة قيد التشغيل.
مثال: واجهة HTTP الخاصة بـ JVB مرتبطة بحلقة الاسترجاع، لذلك لا يمكن الوصول إليها إلا من خلال العمليات المحلية.
باستخدام المنفذ الافتراضي وربط الاسترجاع في المثال، قم بتشغيل هذا الأمر على مضيف JVB:
curl -fsS http://127.0.0.1:8080/metrics | head
تحقق من نقطة النهاية المحلية /metricsقبل تهيئة بروميثيوس.
الاستجابة الناجحة عبارة عن نص عادي يحتوي على عائلات مقاييس بروميثيوس، وغالبًا ما يتبعها # HELPأسطر # TYPEتحتوي على أمثلة. يوضح الرسم التوضيحي الأمر فقط، ولا يُعد دليلًا على استجابة خادم مباشرة. عادةً ما يعني رفض الاتصال أن JVB متوقف، أو أنه يستمع على عنوان أو منفذ آخر، أو أن التكوين المُثبَّت يُعطِّل مُستمع HTTP هذا. يشير رمز HTTP 404 إلى أن الخادم قد استجاب، لكن المسار غير متاح في هذا الإصدار أو تكوين واجهة برمجة التطبيقات. تحقق من سجلات JVB وتكوين الإصدار المُثبَّت لديك بدلًا من تفعيل واجهة برمجة تطبيقات التحكم Colibri غير ذات الصلة لمجرد جعل مسار بروميثيوس يعمل.
تُشير وثائق JVB إلى أن مقاييس Prometheus المتاحة لا تُطابق تمامًا إحصائيات JSON الخاصة بها. كما تُشير إلى أن الرسوم البيانية بحجم المؤتمرات متوفرة فقط بتنسيق Prometheus. تحقق من البيانات التي يُرجعها الإصدار المُثبّت لديك قبل كتابة استعلامات PromQL أو استيراد لوحة معلومات تفترض أسماءً مُحددة.
الخطوة الثانية: حافظ على خصوصية الواجهة الخاصة
عند تشغيل بروميثيوس على نفس المضيف الذي يعمل عليه JVB، اترك الواجهة الخاصة مفتوحة 127.0.0.1. هذا يمنع فتح مستمع آخر لشبكتك. في حالة الإعداد الافتراضي على نفس المضيف، 127.0.0.1:8080يمكن لبروميثيوس الوصول إلى الهدف مباشرةً.
إذا كان بروميثيوس يعمل في مكان آخر، فلن يقبل ربط الاسترجاع الافتراضي لـ JVB الاتصالات منه. يمكنك تهيئة المستمع الخاص للربط بواجهة داخلية يمكن لبروميثيوس الوصول إليها، ثم تقييد جدار الحماية أو شبكة الحاويات بحيث لا يتمكن من الاتصال بالمنفذ الخاص إلا مضيف بروميثيوس. لا تعرض المنفذين 8080 أو 8443 للإنترنت العام: يصف Jitsi هذه الواجهة صراحةً بأنها خاصة، ويؤكد أن نقاط نهايتها غير مخصصة للوصول العام. إذا كانت البيئة تتطلب تشفيرًا أثناء النقل، فإن الواجهة الخاصة تدعم TLS عند تهيئتها باستخدام مخزن مفاتيح؛ أو بدلاً من ذلك، استخدم وكيل TLS داخليًا مُحكم التحكم. تجنب نسخ ربط عام واسع النطاق بدون 0.0.0.0تقييد وصول مصاحب.
بعد تغيير إعدادات المستمع، استخدم آلية التكوين المدعومة في عملية النشر، وأعد تشغيل أو تحميل JVB فقط حسب متطلبات الإصدار. قد تؤدي إعادة التشغيل إلى مقاطعة المكالمات في عملية نشر أحادية الجسر، لذا يُرجى جدولتها بشكل مناسب. في Docker، عدّل التكوين الدائم على جانب المضيف أو البيئة المستخدمة لإنشائه، وليس ملف حاوية مؤقت. تحقق من المستمع من جهاز Prometheus curlقبل المتابعة.
الخطوة 3: إضافة مهمة استخراج بيانات بروميثيوس
أضف مهمة استخراج البيانات إلى ملف إعدادات بروميثيوس. بالنسبة لمثال المضيف نفسه، يكون القسم ذو الصلة هو:
يجب أن يكون هدف الكشط قابلاً للوصول إليه من عملية بروميثيوس؛ استبدل عنوان الاسترجاع بالعنوان الخاص عندما تكون الخدمات على مضيفين منفصلين.
يستخدم تكوين بروميثيوس scrape_configsويدعم الأهداف الثابتة لنشر محدود ومحدد. إذا كان JVB موجودًا في حاوية مختلفة، 127.0.0.1فيُرجى توجيهه إلى حاوية بروميثيوس نفسها؛ استخدم اسم خدمة JVB ومنفذها على شبكة Docker خاصة مشتركة. بالنسبة للمضيف البعيد، استخدم اسم DNS الخاص به أو عنوانه، واحرص على أن تكون قاعدة جدار الحماية محدودة. يشرح مرجع تكوين بروميثيوس مهام جمع البيانات، والأهداف، وإعدادات الفترات الزمنية.
قبل تطبيق أي تغيير، تحقق من صحة الملف بالكامل باستخدام أداة Prometheus المرفقة مع برنامج التثبيت الخاص بك:
إذا نجح التحقق، فأعد تحميل بروميثيوس باستخدام الطريقة المُهيأة لخدمتك، أو أعد تشغيله إذا لم تكن إعادة التحميل مُفعّلة. لا تستنتج النجاح من ملف YAML صالح فقط؛ فقد يظل الهدف صالحًا نحويًا ولكنه غير قابل للوصول.
الخطوة الرابعة: ربط Grafana بـ Prometheus
في Grafana، أضف مصدر بيانات Prometheus المدمج وأدخل عنوان URL الذي يمكن لـ Grafana الوصول إليه. على مضيف واحد، قد يكون هذا هو عنوان URL http://localhost:9090إذا كان Grafana يعمل مباشرةً على ذلك المضيف. أما إذا كان Grafana يعمل في حاوية، localhostفيُقصد بذلك حاوية Grafana نفسها، وليس المضيف أو حاوية Prometheus؛ استخدم اسم خدمة Prometheus على شبكة مشتركة. احفظ مصدر البيانات واختبره. يشرح دليل مصدر بيانات Prometheus الخاص بـ Grafana إعدادات الاتصال، كما توضح وثائق مصدر البيانات كيفية استعلام Grafana عن قاعدة بيانات المقاييس.
افتح "استكشاف"، وحدد "بروميثيوس"، ثم شغّل الأمر up{job="jitsi-videobridge"}. هذا فحصٌ لسلامة عملية جمع البيانات في بروميثيوس، وليس مقياسًا من مقاييس جيتسي. القيمة 1 تعني أن بروميثيوس قد جمع البيانات بنجاح من الهدف للتقييم الحالي؛ أما القيمة 0 فتعني أن الهدف المُكوّن لا يعمل. إذا لم يُرجع الاستعلام أي سلسلة بيانات، فتأكد من اسم المهمة، وإعادة تحميل الإعدادات، واكتشاف الهدف، والنطاق الزمني المُحدد.
استخدم سلسلة Prometheus العامة upللتحقق من سلامة عملية الكشط قبل الاستعلام عن المقاييس الخاصة بـ JVB.
الخطوة الخامسة: أنشئ لوحة معلومات مفيدة وتحقق من البيانات
بمجرد upالتأكد من سلامة النظام، استخدم متصفح المقاييس في Grafana Explore أو متصفح التعبيرات في Prometheus للعثور على سلسلة JVB التي يعرضها إصدارك. ابدأ بمجموعة صغيرة من الأسئلة التشغيلية:
كم عدد المؤتمرات ونقاط النهاية النشطة، وكيف تتغير هذه الأعداد على مدار اليوم؟
هل تتغير معدلات نقل البيانات أو معدلات حزم البيانات الواردة والصادرة في بروتوكول RTP مع ازدياد حمل الاجتماع؟
هل ترتفع سلسلة إجهاد الجسر بالتوازي مع عدد نقاط النهاية، أم أنها مرتفعة بالفعل عند حمل معتدل؟
هل تتوفر مقاييس سلاسل JVM وجمع البيانات المهملة، وهل تتغير هذه المقاييس بناءً على تقارير الاستدعاءات البطيئة؟
استخدم أسماء المقاييس ووحداتها التي يعرضها جهازك /metrics. يوضح مرجع إحصائيات Jitsi أمثلةً مثل conferences` endpoints<T>` و` bit_rate_download<T>` bit_rate_uploadو`<T>` و`<T>` stress_levelفي قائمة الإحصائيات المدعومة، ولكنه يحذر من أن بعض الإحصائيات غير متوفرة حاليًا بتنسيق Prometheus. لا تلصق هذه الأسماء في استعلام حتى تتأكد من وجود عائلة Prometheus في إصدارك. بالنسبة للعدادات التراكمية، استخدم دوال PromQL مثل `<T>` rate()ضمن نطاق محدد؛ أما بالنسبة للمقاييس الآنية مثل عدد المؤتمرات الحالي، فقم برسم القيمة المأخوذة مباشرةً. حافظ على الوحدات الموثقة عند تسمية اللوحات، لأن حقول معدل البت ومعدلات الحزم تستخدم وحدات مختلفة.
أنشئ لوحة تحكم تتضمن عدة لوحات لعرض السلاسل الزمنية، ووحدات قياس واضحة، ونطاقًا زمنيًا يشمل عمليات جمع البيانات الحديثة. تجنب اعتبار أي سلسلة بيانات مفقودة بمثابة صفر: فعدم وجود بيانات قد يشير إلى خطأ إملائي، أو مقياس غير مدعوم، أو فشل في عملية جمع البيانات. بالنسبة للتنبيهات، ابدأ بتوفر الهدف، ثم أضف العتبات فقط بعد مراقبة حركة البيانات الطبيعية في بيئة النشر الخاصة بك. قد يكون استخدام رقم عام لـ "الضغط العالي" مضللًا، لأن السعة تعتمد على المضيف، ونوع الوسائط، والتكوين.
تحقق من الإعداد النهائي
قم بتشغيل هذا التسلسل من الأسهل إلى الأكثر تحديدًا:
على مضيف JVB، اطلب http://127.0.0.1:8080/metricsوتأكد من أن الاستجابة تحتوي على نص قياس.
من مضيف أو حاوية بروميثيوس، اطلب نفس نقطة النهاية باستخدام العنوان الخاص المُكوّن. النجاح المحلي لا يضمن إمكانية الوصول عن بُعد.
في عرض الأهداف في بروميثيوس، تأكد من أن jitsi-videobridgeالهدف يعمل، وافحص آخر خطأ في عملية الكشط إذا كان معطلاً.
في Grafana Explore، يؤدي التأكيد إلى up{job="jitsi-videobridge"}إرجاع 1، ثم الاستعلام عن اسم مقياس JVB واحد تم نسخه من نقطة النهاية المباشرة.
افتح لوحة معلومات على مدى فترة زمنية تتضمن عدة فترات جمع بيانات وتحقق من أن الوحدات والتسميات والطوابع الزمنية منطقية.
إذا كان الجهاز يعمل محليًا ولكن بروميثيوس يُبلغ عن خطأ في الاتصال، فأعد النظر في عنوان الربط والمنفذ وجدار الحماية وشبكة الحاوية. إذا كان الهدف يعمل ولكن استعلامات JVB فارغة، فتحقق من الاسم المُصدَّر بدقة، والنطاق الزمني المُحدد، وما إذا كانت تلك الإحصائية موجودة في مُخرجات بروميثيوس. إذا كانت لوحات المعلومات تُظهر بيانات ولكن جودة الاجتماع لا تزال مُتأثرة، فإن المقاييس تُساعد في تضييق نطاق التحقيق؛ فهي لا تُحدد بمفردها مشكلة شبكة Wi-Fi المحلية أو المتصفح أو شبكة الميل الأخير لدى المُشارك.
يتبع هذا التكوين وثائق Jitsi و Prometheus و Grafana الأصلية التي تمت مراجعتها في 6 أكتوبر 2026. ونظرًا لتطور تكوين Jitsi المرجعي وشاشات Grafana، قارن الأمثلة مع الوثائق والملفات الخاصة بالإصدارات التي تستخدمها بالضبط.