كيفية مراقبة RabbitMQ (دون فقدان الرسائل أو المال أو النوم)

تخيل هذا: إنه صباح يوم الاثنين. يدير موقع التجارة الإلكترونية الخاص بك “تخفيضات سريعة لمدة 48 ساعة”. الطلبات تتدفق، والمدفوعات قيد المعالجة، وفريق الدعم الخاص بك هادئ بشكل غير عادي - وهو أمر جميل.

ثم، فجأة، ينفجر سلاك.

  • “الدفع عالق عند الدوران...”

  • “تأكيدات الطلبات لا تخرج.”

  • “المخزون يبدو خاطئاً.”

  • “لماذا يتم استرداد الأموال المستردة لساعات؟”

في البداية، كل شيء المظهر بصحة جيدة: وحدة المعالجة المركزية على ما يرام، وخوادم الويب الخاصة بك تعمل، والرسوم البيانية لقاعدة البيانات لا تظهر أي شيء دراماتيكي. لكن النظام لا يزال يبدو... متجمداً.

بعد 45 دقيقة من مكافحة الحرائق، تجد الجاني الحقيقي: RabbitMQ. تضخمت بعض قوائم الانتظار، وتباطأ المستهلكون، وتراجعت الإقرارات، ووصلت الذاكرة إلى أعلى مستوياتها. بدأ RabbitMQ في تطبيق التحكم في التدفق، وبدأ الناشرون في التوقف، وتوقف منطق عملك بهدوء عن نقل الرسائل عبر تدفقات العمل الحرجة.

هذا هو بالضبط سبب مراقبة RabbitMQ ليست اختيارية. إذا كان RabbitMQ هو “نظام الدورة الدموية” في بنيتك، فإن المراقبة هي جهاز مراقبة القلب الذي يخبرك بوجود خطأ ما قبل ينهار المريض.

ستتعلم في هذا الدليل ما يلي:

  • ما هو RabbitMQ (بلغة إنجليزية واضحة)

  • لماذا يجب عليك مراقبته (حتى لو كان “على ما يرام منذ أشهر”)

  • ما هي المقاييس الأكثر أهمية وما هو “الجيد” الذي يبدو عليه "الجيد

  • أنماط الفشل الشائعة وكيف يمكن للمراقبة اكتشافها مبكراً

  • الأدوات عالية المستوى التي يمكنها مراقبة RabbitMQ

  • قائمة مراقبة بسيطة وعملية لمراقبة RabbitMQ


ما هو RabbitMQ؟

RabbitMQ من أشهر وسيط الرسائل. وهو موجود بين الأنظمة ويساعدها على تبادل الرسائل بشكل موثوق.

فبدلاً من أن تتصل خدمة ما بخدمة أخرى مباشرةً (وتفشل إذا كانت الخدمة الأخرى بطيئة أو معطلة)، يمكن للخدمات نشر الرسائل في RabbitMQ، وتستهلك الخدمات الأخرى تلك الرسائل عندما تكون جاهزة.

RabbitMQ في جملة واحدة

RabbitMQ هو نظام قوائم انتظار الرسائل حتى تتمكن تطبيقاتك من التواصل بشكل غير متزامن وموثوق وعلى نطاق واسع.

مفاهيم RabbitMQ الرئيسية (سريعة وسهلة الاستخدام)

لا تحتاج إلى حفظها، لكنها تساعدك على تفسير إشارات المراقبة:

  • المنتج/الناشر:: التطبيق الذي يرسل الرسائل

  • المستهلك:: التطبيق الذي يستقبل الرسائل

  • قائمة الانتظار:: حيث تنتظر الرسائل

  • المبادلات:: حيث تصل الرسائل أولاً ويتم توجيهها

  • التجليد:: القاعدة التي تربط التبادل بقائمة الانتظار

  • المضيف الظاهري (vhost):: مساحة اسم منطقية (مثل المستأجر/البيئة)

  • القناة:: اتصال خفيف الوزن داخل اتصال TCP

  • إقرار (إقرار):: يؤكد المستهلك أنه عالج الرسالة

  • DLQ (قائمة انتظار الحروف الميتة):: الرسائل التي لا يمكن معالجتها تذهب هنا (إذا تم تكوينها)

يقوم RabbitMQ عادةً بتنفيذ AMQP (بروتوكول وضع الرسائل في قائمة انتظار الرسائل المتقدمة) ولكنه يدعم أيضًا بروتوكولات أخرى من خلال المكونات الإضافية.


لماذا تحتاج إلى مراقبة RabbitMQ؟

غالبًا ما يكون RabbitMQ “تبعية صامتة”. عندما يتعثر، تظهر الأعراض في مكان آخر:

  • انتهاء مهلة طلبات الويب

  • وظائف الخلفية تتراكم الوظائف الخلفية

  • توقف إرسال رسائل البريد الإلكتروني

  • التأخير في معالجة الدفع

  • الأنظمة التي تعتمد على الأحداث تصبح غير متناسقة

  • تبدأ الخدمات المصغرة في إعادة المحاولة والعصف ببعضها البعض

يمكن أن تكون مشكلات RabbitMQ مكلفة لأنها تنشئ الأعمال المتراكمة المخفية. قد يكون نظامك لا يزال “يعمل”، لكنه لا ينتج نتائج.

تساعدك مراقبة RabbitMQ على

  1. اكتشاف حالات التباطؤ في وقت مبكر (قبل إشعار العملاء)

  2. منع فقدان الرسالة (أو على الأقل اصطياد الظروف الخطرة)

  3. حماية الإنتاجية أثناء ذروة حركة المرور

  4. تجنب الأعطال المتتالية عبر الخدمات المصغرة

  5. سعة الخطة (ذاكرة الوصول العشوائي / القرص / الشبكة / عدد المستهلكين)

  6. تسريع استكشاف الأخطاء وإصلاحها عندما يحدث خطأ ما

فخ “نجح الأمر بالأمس”

غالبًا ما تظهر حالات فشل RabbitMQ بعد:

  • ارتفاع في حركة المرور

  • نشر المستهلكين العالقين

  • انقطاع التبعية النهائية (على سبيل المثال، قاعدة البيانات أو مزود الدفع)

  • معالج الرسائل البطيء

  • مجموعة من الرسائل الكبيرة

  • انخفاض مساحة القرص

  • إصابة العلامة المائية للذاكرة

  • النمو غير المحدود لقائمة الانتظار بسبب عدم وجود حدود/حدود TTLs/حدود TTLs

بعبارة أخرى: لا يفشل RabbitMQ بشكل عشوائي، بل يفشل عندما يتغير النظام من حوله. المراقبة تجعل هذه التغييرات مرئية.


ما الذي يجب أن تراقبه في RabbitMQ؟

إذا كنت تراقب شيئًا واحدًا فقط، فراقب هذا:

✅ عمق قائمة الانتظار + صحة المستهلك

لأن هذا هو المكان الذي يكشف فيه “عدم إنجاز العمل” عن نفسه.

لكن الإعداد المتين لمراقبة RabbitMQ يغطي أربع طبقات:

  1. مستوى قائمة الانتظار (تدفق الرسائل)

  2. مستوى الوسيط (إعدادات RabbitMQ الداخلية)

  3. مستوى العقدة/النظام (نظام تشغيل + قرص + ذاكرة)

  4. مستوى التطبيق (سلوك النشر/الاستهلاك والأخطاء)

دعنا نحلل أهم المقاييس.


مقاييس مراقبة RabbitMQ المهمة بالفعل

1) مقاييس قائمة الانتظار (الإنذار المبكر #1)

تخبرك هذه المقاييس ما إذا كانت الرسائل تتدفق أم تتراكم.

المقاييس الرئيسية:

  • الرسائل جاهزة:: الانتظار في قائمة الانتظار

  • رسائل غير محفوظة:: تم تسليمها إلى المستهلكين ولكن لم يتم الاعتراف بها بعد

  • إجمالي الرسائل:: جاهز + غير معبأ

  • معدل الدخول:: الرسائل المنشورة في الثانية الواحدة

  • معدل الخروج:: الرسائل المعترف بها/المستهلكة في الثانية الواحدة

  • مستهلكو قائمة الانتظار:: عدد المستهلكين النشطين في كل قائمة انتظار

ما الذي يجب مراقبته:

  • إجمالي الرسائل في اتجاه تصاعدي مع مرور الوقت → لا يمكن للمستهلكين مواكبة

  • نمو غير معبأ → المستهلك بطيء، أو عالق أو لا يستجيب بشكل صحيح

  • المستهلكون = صفر على قائمة انتظار حرجة → ستتراكم الرسائل بسرعة

  • ينخفض الخروج فجأة → مشكلة تبعية المصب أو المستهلكين المعطلين

قاعدة عامة بسيطة:
إذا استمرت قائمة الانتظار في التزايد لأكثر من بضع دقائق أثناء “حركة المرور العادية”، فهذا يعني أن هناك خطأ ما.


2) صحة المستهلك (حيث تبدأ العديد من الحوادث)

غالبًا ما يتم إلقاء اللوم على RabbitMQ، ولكن السبب الجذري غالبًا ما يكون مشكلة المستهلك:

  • رمز تم نشره مع وجود خطأ

  • المستهلك عالق في إعادة المحاولة

  • استنفدت مجموعة الخيوط

  • مكالمات قاعدة البيانات بطيئة

  • حدود معدل واجهة برمجة التطبيقات الخارجية

  • تسرب ذاكرة المستهلك

الشاشة:

  • عدد المستهلكين لكل قائمة انتظار

  • معدل الاستهلاك مقابل معدل النشر

  • رسائل غير معبأة

  • سجلات أخطاء المستهلك (المهلات، الاستثناءات)

  • وقت المعالجة (من قياس التطبيق عن بُعد إذا كان متاحًا)

نصيحة للمحترفين:
قائمة الانتظار المتنامية ليست سيئة دائمًا أثناء الارتفاع المفاجئ. قائمة الانتظار التي تنمو ولا يتعافى أبدًا سيء.


3) الاتصالات والقنوات (مصدر خفي لعدم الاستقرار)

يمكن أن تؤدي كثرة الاتصالات أو القنوات إلى تدهور الأداء.

الشاشة:

  • اتصالات مفتوحة

  • القنوات لكل اتصال

  • اضطراب الاتصال (قطع الاتصال/إعادة الاتصال المتكرر)

  • الاتصالات المحظورة (التحكم في التدفق)

ما الذي يجب مراقبته:

  • طفرات مفاجئة في الاتصالات (عملاء تمت تهيئتهم بشكل خاطئ)

  • عدد القنوات الضخمة (التسريبات)

  • حلقات إعادة الاتصال المتكررة (مشاكل في الشبكة أو المصادقة)


4) صحة العقدة: الذاكرة، القرص، وحدة المعالجة المركزية، واصفات الملفات

RabbitMQ حساس للذاكرة والقرص.

الشاشة:

  • استخدام الذاكرة وما إذا كانت تقترب من العلامة المائية العالية

  • المساحة الخالية على القرص (سيقوم RabbitMQ بحظر الناشرين إذا كان القرص منخفضًا)

  • وحدة المعالجة المركزية (قد يؤدي الارتفاع المستمر في وحدة المعالجة المركزية (CPU) إلى تقليل الإنتاجية)

  • واصفات الملف (يمكن أن يؤدي نفاذها إلى قطع التوصيلات)

  • إنتاجية الشبكة والأخطاء (السماسرة هم سماسرة الشبكات)

لماذا القرص مهم جداً
يقوم RabbitMQ باستمرار الرسائل (اعتمادًا على إعدادات المتانة) ويستخدم القرص بكثافة في ظروف معينة. عندما يكون القرص منخفضًا جدًا، قد يحمي RabbitMQ نفسه بحظر الناشرين. يبدو ذلك وكأن “التطبيق معطل”، على الرغم من أن الخادم يعمل.


5) صحة الوسيط وحالة المجموعة

إذا قمت بتشغيل مجموعة RabbitMQ، فراقب أيضًا:

  • حالة العقدة لأعلى/لأسفل

  • أقسام الكتلة العنقودية

  • انعكاس طابور الانتظار/صحة طابور الانتظار (حسب الإعداد الخاص بك)

  • حالة المزامنة (عند الاقتضاء)

  • تغييرات القائد وتأخيرات النسخ المتماثل (لقوائم انتظار النصاب)


6) الأمان على مستوى الرسائل: DLQs، وإعادة المحاولات، و TTLs

تستخدم العديد من الأنظمة عمليات إعادة المحاولة والإرسال الميت للتعامل مع حالات الفشل بأمان. تساعد المراقبة على ضمان عدم تحول “الفشل الرشيق” إلى “فشل صامت”.”

الشاشة:

  • عمق قائمة انتظار الحروف الميتة

  • معدل الرسائل المكتوب عليها حروفها ميتة

  • عمق قائمة انتظار إعادة المحاولة (في حالة استخدامه)

  • انتهاء صلاحية مدة صلاحية الرسالة (إن وجدت)

إذا كانت طوابير DLQs تنمو، فهذا يعني غالبًا أن عملاءك يفشلون ويتم إعادة توجيه الرسائل - قد يتأثر العملاء حتى لو كانت قائمة الانتظار الرئيسية “تبدو جيدة”.”


مشاكل RabbitMQ الشائعة (وإشارة المراقبة التي تلتقطها)

المشكلة: المستهلكون منخفضون

الإشارة:

  • المستهلكون = صفر

  • الرسائل الجاهزة ترتفع بسرعة

المشكلة: يتسبب خطأ المستهلك في بطء المعالجة

الإشارة:

  • الارتفاعات غير المتوقعة

  • انخفاض معدل الخروج

  • زيادة وقت المعالجة (مقياس التطبيق)

المشكلة: انقطاع تبعية المصب (قاعدة البيانات/واجهة برمجة التطبيقات)

الإشارة:

  • عمليات تسلق غير مثبتة

  • ارتفاع أخطاء/مهلات المستهلكين

  • تسارع نمو قائمة الانتظار

المشكلة: تم تشغيل العلامة المائية العالية للذاكرة

الإشارة:

  • استخدام الذاكرة يقترب من العلامة المائية

  • تصبح الاتصالات مسدودة

  • زيادة وقت استجابة النشر

المشكلة: إنذار القرص / انخفاض مساحة القرص

الإشارة:

  • انخفاض المساحة الخالية من الأقراص عن الحد الأدنى

  • يحظر RabbitMQ النشر

  • زيادة مهلات المنتجين

المشكلة: تسرب الاتصال/القناة في التطبيق

الإشارة:

  • الاتصالات/القنوات تتجه نحو الارتفاع بشكل مطرد

  • تسلق واصفات الملف

  • في النهاية: فشل الاتصال

المشكلة: تهيمن قائمة انتظار “ساخنة” واحدة على موارد الوسيط

الإشارة:

  • قائمة انتظار واحدة ذات عمق كبير ومعدلات عالية

  • يصبح البعض الآخر بطيئًا حتى لو كان حجمه منخفضًا

  • طفرات وحدة المعالجة المركزية (CPU) وزيادات في زمن انتقال الوسيط

المراقبة لا تخبرك فقط أن هناك خطأ ما - يشير إلى حيث.


كيفية مراقبة RabbitMQ: منهج عملي

الاستراتيجية البسيطة والفعالة هي

  1. ابدأ بالأساسيات
    عمق قائمة الانتظار، والمستهلكون، والدخول/الخروج، والذاكرة غير المعبأة، والقرص.

  2. إضافة تنبيهات تتوافق مع تأثير الأعمال
    التنبيه على الاتجاهات (تزايد التراكمات المتراكمة)، وليس فقط العتبات الخام.

  3. إنشاء لوحات معلومات حول سير العمل
    عرض قوائم الانتظار مجمّعة حسب مجال العمل: السداد، والإشعارات، والفوترة.

  4. ربط مقاييس الوسيط مع القياس عن بُعد للتطبيق
    مقاييس RabbitMQ + سجلات أخطاء المستهلك = السبب الجذري السريع.

  5. استخدام إشارات بنمط SLO
    “تعتبر عبارة ”تتم معالجة الرسائل في غضون X دقيقة" ذات مغزى أكبر من عبارة CPU%.


حلول رفيعة المستوى لمراقبة RabbitMQ

فيما يلي الخيارات المجربة المستخدمة في بيئات الإنتاج الحقيقية.

1) Xitoring (مراقبة الكل في واحد لـ RabbitMQ ومجموعتك الكاملة)

Xitoring.com هو حل مراقبة شامل مصمم لمساعدتك على مراقبة البنية التحتية والخدمات الهامة - بما في ذلك وسطاء الرسائل مثل RabbitMQ - بطريقة واضحة وقابلة للتنفيذ.

لماذا يناسب مراقبة RabbitMQ بشكل جيد:

  • لوحات تحكم مركزية للبنية التحتية + الخدمات (مكان واحد للبحث)

  • تنبيهات مصممة للحظات “هناك خطب ما الآن”

  • رؤية عالية المستوى تساعد كلاً من المطورين وفرق العمليات على حد سواء

  • مفيدة عندما تكون مشكلات RabbitMQ أعراضًا لمشكلات النظام الأوسع نطاقًا (قاعدة البيانات، الشبكة، زمن انتقال التطبيق)

الأفضل لـ
الفرق التي تريد محور مراقبة واحد بدلًا من تجميع أدوات متعددة معًا، وتريد مراقبة RabbitMQ كجزء من صورة أكبر “متكاملة”.


2) البرنامج المساعد لإدارة RabbitMQ (واجهة مستخدم مدمجة + مقاييس أساسية)

يتضمن RabbitMQ واجهة إدارة (في حالة تمكينه) تعرض قوائم الانتظار والمعدلات والاتصالات والمستهلكين وإحصائيات العقدة.

الإيجابيات:

  • سرعة التمكين

  • رائع للفحص اليدوي وتصحيح الأخطاء

  • إظهار التفاصيل على مستوى قائمة الانتظار بوضوح

السلبيات:

  • ليس نظام مراقبة كامل بمفرده

  • تنبيهات محدودة واتجاهات طويلة الأجل ما لم يتم دمجها في مكان آخر

الأفضل لـ
سرعة استكشاف الأعطال وإصلاحها والرؤية اليومية، خاصةً في الإعدادات الأصغر حجماً.


3) Prometheus + Grafana (مكدس مراقبة مفتوح المصدر شائع)

النهج الشائع هو:

  • تصدير مقاييس RabbitMQ عبر مُصدِّر أو نقاط نهاية مدمجة

  • اجمع مع بروميثيوس

  • التصور والتنبيه باستخدام Grafana/Alertmanager

الإيجابيات:

  • لوحات معلومات وتنبيهات قوية

  • نظام بيئي قوي وقوالب مجتمعية

  • رائعة للاتجاهات طويلة الأجل وSLOs

السلبيات:

  • المزيد من الإعداد والصيانة

  • ستحتاج على الأرجح إلى ضبط التنبيهات ولوحات المعلومات

الأفضل لـ
الفرق التي تعمل بالفعل على تشغيل Prometheus أو ترغب في الحصول على حزمة مرنة مفتوحة المصدر.


4) Datadog (منصة المراقبة SaaS)

يدعم Datadog مراقبة RabbitMQ من خلال عمليات التكامل ويمكنه ربط مقاييس الوسيط بالمضيفين والحاويات وآثار إدارة أداء الأجهزة.

الإيجابيات:

  • تأهيل سريع

  • ترابط قوي عبر المقاييس والسجلات والتتبعات

  • تنبيه وتصور رائع

السلبيات:

  • تزداد التكلفة مع زيادة الحجم

  • الاعتماد على البرمجيات كخدمة SaaS

الأفضل لـ
الفرق التي تريد وقتاً سريعاً لتحقيق القيمة وإمكانية مراقبة واسعة النطاق.


5) نيو ريليك (منصة المراقبة SaaS)

توفر New Relic مراقبة البنية التحتية، وإدارة أداء العمليات (APMQ)، ولوحات المعلومات، والتنبيهات. يمكن مراقبة RabbitMQ من خلال عمليات التكامل وخطوط أنابيب المقاييس المخصصة.

الإيجابيات:

  • رؤية كاملة (إدارة أداء الأداء الآلي المتقدم + المعلومات)

  • لوحات معلومات وتنبيهات جيدة

السلبيات:

  • يتطلب تكوينًا مدروسًا للحصول على أفضل إشارات RabbitMQ

الأفضل لـ
الفرق التي تستخدم بالفعل New Relic لمراقبة التطبيقات.


6) المكدس المرن (ELK) للسجلات + المقاييس (ولوحات معلومات Kibana)

يُستخدم Elastic على نطاق واسع لتجميع السجلات، ويمكنه أيضًا التعامل مع المقاييس اعتمادًا على إعداداتك.

الإيجابيات:

  • بحث ممتاز في السجل وارتباطه

  • لوحات معلومات قوية للتحليلات التشغيلية

السلبيات:

  • يمكن أن تصبح معقدة على نطاق واسع

  • يحتاج إلى انضباط جيد حول المخططات والاحتفاظ بها

الأفضل لـ
الفرق حيث تكون السجلات أداة أساسية للتشخيص والامتثال.


7) سبانك

يعد Splunk شائعًا في المؤسسات الكبيرة لتجميع السجلات والتنبيهات والذكاء التشغيلي.

الإيجابيات:

  • قدرات مؤسسية قوية

  • استعلامات وتنبيهات قوية

السلبيات:

  • يمكن أن تكون مكلفة وثقيلة في التشغيل

الأفضل لـ
المؤسسات الكبيرة ذات تدفقات عمل المراقبة الناضجة.


8) مراقبة مزود السحابة (عند إدارة RabbitMQ)

إذا كنت تقوم بتشغيل RabbitMQ عبر خدمة مُدارة (أو عرض مُدار من قبل البائع)، يمكنك الاعتماد على

  • مراقبة السحابة (مثل نظائر CloudWatch)

  • لوحات معلومات البائعين + نقاط نهاية المقاييس

الإيجابيات:

  • عمل تشغيلي أقل

  • مدمج مع تنبيهات المنصة

السلبيات:

  • قد لا يعرض العمق الذي تريده للعمليات على مستوى قائمة الانتظار

  • لا تزال بحاجة إلى رؤية على مستوى التطبيق

الأفضل لـ
فرق العمل التي تعطي الأولوية لتقليل النفقات العامة للعمليات.


بناء لوحة معلومات مراقبة RabbitMQ (ما يجب تضمينه)

إذا كنت تنشئ لوحة معلومات في Xitoring (أو أي أداة أخرى)، فقم ببنائها حول الأسئلة التي تطرحها أثناء الحوادث.

القسم (أ): “هل تدفق الرسائل سليم؟”

  • إجمالي الرسائل لكل قائمة انتظار حرجة

  • الرسائل الجاهزة مقابل غير المعبأة

  • معدل النشر مقابل معدل الفحص

  • عدد المستهلكين لكل قائمة انتظار

  • عمق DLQ ومعدل DLQ

القسم ب: “هل الوسيط تحت الضغط؟”

  • استخدام الذاكرة (وقرب العلامة المائية)

  • المساحة الفارغة للقرص

  • استخدام وحدة المعالجة المركزية

  • إنتاجية الشبكة

  • واصفات الملف

القسم C: “هل المجموعة مستقرة؟”

  • العقدة لأعلى/لأسفل

  • أحداث التقسيم

  • تكرار قائمة الانتظار/صحة النصاب (إن أمكن)

القسم د: “هل تتصرف التطبيقات؟”

  • أخطاء في نشر المنتج/مهلات النشر

  • معدل أخطاء المستهلكين

  • وقت معالجة المستهلك

  • معدل إعادة الاتصال

نصيحة: ضع قوائم الانتظار الأكثر أهمية للأعمال في الأعلى. في حالة وقوع حادث، لا أحد يريد التمرير.


تنبيه لـ RabbitMQ: اجعله بسيطاً ومفيداً

يجب أن تكون التنبيهات قابلة للتنفيذ. يجيب تنبيه جيد من RabbitMQ:

  • ما الذي تأثر؟

  • أين يحدث ذلك (أي قائمة انتظار/عقدة)؟

  • ما مدى إلحاح الأمر؟

تنبيهات عملية تعمل بشكل جيد

1) تزايد تراكم قوائم الانتظار المتراكمة

  • يتم التشغيل عند زيادة عمق قائمة الانتظار بشكل مستمر لمدة N دقيقة

2) المستهلكون مفقودون

  • يتم التشغيل عندما يكون عدد المستهلكين 0 لقائمة انتظار حرجة لأكثر من 1-2 دقيقة

3) الرسائل غير المعبأة عالية جدًا

  • يتم التشغيل عند تجاوز الحد المسموح به (أو ينمو بشكل مطرد)

4) مساحة القرص منخفضة

  • يتم التشغيل عندما تنخفض المساحة الخالية للقرص عن المخزن الآمن (يتم تعيينه بناءً على بيئتك)

5) ضغط الذاكرة

  • التشغيل عندما تكون الذاكرة عالية وترتفع نحو العلامة المائية

6) نمو DLQ

  • التشغيل عند زيادة عمق DLQ عن خط الأساس العادي

تجنب التنبيهات الصاخبة

  • لا تنبه على طفرات وحدة المعالجة المركزية وحدها.

  • لا تنبه على عمق قائمة الانتظار وحدها دون سياق.

  • قم بالتنبيه على الاتجاهات + المستهلكين المفقودين + حدود موارد الوسيط.


أفضل الممارسات التي تجعل المراقبة أكثر فعالية

تكون المراقبة أقوى عندما يكون إعداد RabbitMQ الخاص بك مصممًا أيضًا لتحقيق الاستقرار.

1) منع النمو اللامتناهي

  • استخدم TTLs عند الاقتضاء

  • استخدام DLQs عن قصد

  • النظر في سياسات الحد الأقصى للطول لقوائم الانتظار التي يجب أن تكون محدودة

2) اجعل الرسائل مرنة

تزيد الرسائل الكبيرة من الذاكرة وحمل الشبكة. يفضل إرسال المعرفات وجلب التفاصيل في مكان آخر، عندما يكون ذلك ممكناً.

3) استخدام الإقرارات بشكل صحيح

  • Ack فقط بعد نجاح المعالجة

  • توخَّ الحذر عند استخدام الإيقاف التلقائي (يمكن أن يخفي الفشل)

4) التحكم في الجلب المسبق

تؤثر إعدادات الجلب المسبق للمستهلك على عدد مرات إلغاء الجلب المسبق والإنتاجية. تساعدك مراقبة إلغاء الجلب المسبق على ضبط الجلب المسبق.

5) أعباء العمل المنفصلة

ضع أعباء العمل البطيئة/النادرة في قوائم انتظار منفصلة حتى لا تعيق التدفقات ذات الأولوية العالية.

6) راقب “عواصف إعادة المحاولة”

إذا أعاد المستهلكون المحاولة بقوة شديدة، يمكنك زيادة التحميل على RabbitMQ والأنظمة النهائية. تساعد DLQs وإعادة المحاولة المتأخرة.


الأفكار النهائية: راقب RabbitMQ وكأنه منتج

RabbitMQ ليس مجرد “بنية تحتية”. إنه جزء حي من سلوك نظامك. عندما يتباطأ، يتباطأ عملك.

يتيح لك الإعداد الجيد للمراقبة الإجابة بسرعة وثقة:

  • هل تتدفق الرسائل؟

  • إذا لم يكن الأمر كذلك، فما قائمة الانتظار العالقة؟

  • هل الوسيط في صحة جيدة؟

  • هل يعمل المستهلكون - أم يفشلون في صمت؟

  • هل هذا ارتفاع مفاجئ أم خطأ أم مشكلة في السعة؟

إذا كنت تريد مراقبة RabbitMQ التي تتناسب مع نهج “مراقبة كل شيء في مكان واحد” الأوسع نطاقًا, زيتورينج خيارًا أوليًا قويًا يجب أخذه بعين الاعتبار - خاصةً عندما تكون مشكلات RabbitMQ جزءًا واحدًا فقط من لغز أداء أكبر.