قواعد التسجيل والتنبيه
قواعد التسجيل والتنبيه
تمنحك PromQL الخام قدرة تعبيرية كبيرة، لكن ثمة قدرتين حيويتين تقعان خارج محرر الاستعلامات: قواعد التسجيل — التي تحسب المسبقات المعقدة مسبقاً وتحوّلها إلى مقاييس من الدرجة الأولى — وقواعد التنبيه — التي تقيّم الشروط بصفة مستمرة وترسل إشعارات قابلة للتنفيذ إلى مهندسي الدعم المناوبين. يشكّل الاثنان معاً العمود الفقري التشغيلي لأي نشر إنتاجي لـ Prometheus.
سبب وجود قواعد التسجيل
يقيّم Prometheus كل قاعدة عند كل دورة استقصاء. يمكن أن يستهلك تعبير معقد كمعدل خمس دقائق المجمَّع عبر آلاف السلاسل الزمنية قدراً كبيراً من المعالج والذاكرة عند كل تحميل للوحة التحكم. وحين يُغذّي هذا التعبير ثلاث لوحات تحكم وقاعدتَي تنبيه وحساب مستوى خدمة، يقيّمه Prometheus عشرات المرات في الدقيقة — بشكل مكرر تماماً.
تخبر قاعدة التسجيل Prometheus: احسب هذا التعبير مرة واحدة في كل دورة تقييم، واحفظ النتيجة مقياساً جديداً. أي استعلام لاحق على هذا المقياس يصبح بحثاً بسيطاً في التسميات بدلاً من تمرير تجميع كامل. عند نطاق Google، قواعد التسجيل ليست تحسيناً اختيارياً — بل ضرورة إلزامية.
بنية ملف قاعدة التسجيل
تقع القواعد في ملفات YAML تُحمَّل عبر فقرة rule_files في prometheus.yml. يمكن أن يضم الملف مجموعات متعددة؛ ولكل مجموعة interval خاص بها (الافتراضي هو evaluation_interval العام).
اصطلاح التسمية level:metric:operations هو التوصية الرسمية لـ Prometheus (يُعرف أيضاً بـ مخطط تسمية قواعد التسجيل). level هو نطاق التجميع (job، instance، cluster)، وmetric هو اسم المقياس الأساسي، وoperations يصف ما جرى فعله (rate5m، p99_5m، ratio1h). اتباع هذا الاصطلاح يجعل القواعد قابلة للاكتشاف ويمنع تعارض الأسماء بين الفرق.
قواعد التنبيه — تشريح تنبيه جيد
قاعدة التنبيه هي تعبير PromQL يُقيَّم دورياً. حين ينتج التعبير متجهاً بنتيجة واحدة أو أكثر، ينتقل التنبيه إلى حالة Pending. بمجرد أن يبقى Pending طوال مدة for، يُطلق (Firing) ويُسلَّم إلى Alertmanager.
for، ثم يوجّهه Alertmanager إلى قناة الإشعارات.الفقرة for — أهميتها
مدة for هي دفاعك الأول ضد عواصف التنبيهات الناجمة عن ارتفاعات عابرة. ارتفاع استخدام المعالج لمدة 15 ثانية لا يستوجب إيقاظ أحد في الثالثة صباحاً. إعداد for: 5m يعني أن الشرط يجب أن يكون صحيحاً بصورة ثابتة لمدة خمس دقائق كاملة، مما يرشّح الضوضاء مع الإمساك بالتدهور المستدام.
for: 0s على مقاييس عالية الحركة. كل اضطراب — استقصاء بطيء واحد، توقف مؤقت لجمع البيانات المهملة، إعادة تشغيل متتالية — سيُطلق التنبيه. يجب أن تتضمن قواعد التنبيه الإنتاجية على المقاييس القائمة على المعدلات for لا تقل عن 2-5 دقائق. الاستثناء هو up == 0 (إمكانية الوصول إلى المثيل) الذي يمكن استخدامه بشكل معقول مع for: 1m.
التسميات والتعليقات التوضيحية — الجودة التشغيلية
تُدمج التسميات في قواعد التنبيه مع مجموعة تسميات التنبيه التي يستخدمها Alertmanager للتوجيه. severity: page مقابل severity: ticket هو أكثر الأبعاد شيوعاً؛ وإضافة team تتيح التوجيه لكل فريق إلى خدمات PagerDuty منفصلة.
تحمل التعليقات التوضيحية سياقاً مقروءاً للإنسان: summary (جملة واحدة تظهر في Slack)، وdescription (تفصيلي يتضمن رابطاً للـ runbook)، واختيارياً runbook_url. استخدم صيغة قوالب Go لتضمين قيم التسميات ({{ $labels.job }}) والقيمة الحالية ({{ $value }}) مباشرة في الإشعار.
runbook_url مدعوم رسمياً من Alertmanager ويُعرض كرابط قابل للنقر في معظم المستقبلات. عامل Runbook المفقود كعائق للنشر، تماماً كما تعامل الاختبار المفقود.
التحقق من الصحة وإعادة التحميل
يأتي Prometheus مع promtool — استخدمه في CI للتحقق من صحة ملفات القواعد قبل وصولها للإنتاج.
شغّل promtool test rules test/alert_tests.yml في pipeline الخاص بك. ثم أعد تحميل Prometheus في وقت التشغيل — دون الحاجة لإعادة التشغيل — إما عبر SIGHUP أو نقطة نهاية HTTP للإعادة (حين يكون --web.enable-lifecycle مفعّلاً): curl -X POST http://localhost:9090/-/reload.
المزالق الإنتاجية
إغفال قاعدة التسجيل لتعبير تنبيه: إذا أشار تنبيهك إلى استعلام خام مكلف بدلاً من قاعدة تسجيل محسوبة مسبقاً، فتحت الأحمال العالية قد يستغرق التقييم وقتاً أطول مما هو مسموح وقد لا ينطلق التنبيه صامتاً — تماماً حين تحتاجه أكثر. احرص دائماً على دعم التنبيهات الحرجة بقواعد تسجيل.
انفجار كثافة التسميات: إضافة تسمية عالية الكثافة (مثل user_id) إلى قاعدة تسجيل ينتج سلسلة زمنية مخزّنة واحدة لكل مستخدم. هذا عادةً كارثي. أبقِ قواعد التسجيل عند حبوبية المهمة أو الخدمة، وليس المثيل أو الطلب.
عدم تطابق فترة التقييم مع فترة الاستقصاء: إذا ضبطت interval لمجموعة قواعد أقصر من فترة الاستقصاء للمقاييس الأساسية، ستُعيد القاعدة التقييم على نفس البيانات مراراً، مما يهدر المعالج دون إنتاج معلومات جديدة. أبقِ فترات القواعد مساوية لفترة الاستقصاء أو أكبر منها.