ميزانيات الأخطاء وتنبيهات معدل الاستهلاك: إيقاظ المناوب للأسباب الصحيحة
كيف تحوّل هدف SLO إلى تنبيهات تنطلق بسرعة عند الأعطال الحقيقية، وتصمت أمام الضجيج، وتتوقف فور حلّ المشكلة.
الأمثلة عامة وتوضيحية. لم تُؤخذ من بيئة أي عميل: اضبط العتبات والإعدادات وفق نظامك.
ابدأ مما يعيشه المستخدمون
معظم التنبيهات المزعجة تأتي من التنبيه على الأسباب — المعالج، الذاكرة، حاوية أُعيد تشغيلها — بدلًا مما يشعر به المستخدمون. مؤشر مستوى الخدمة (SLI) يقيس ذلك مباشرة: نسبة الطلبات الصالحة التي كانت جيدة. وقد تعني «جيدة» استجابةً بلا خطأ خادم، أو استجابةً أسرع من عتبة معينة، أو كليهما.
يحدد هدف مستوى الخدمة (SLO) غايةً لتلك النسبة خلال نافذة زمنية، مثل نجاح 99.9% من الطلبات خلال 30 يومًا. والفرق حتى 100% هو ميزانية الأخطاء: هنا 0.1% من الطلبات، أي نحو 43 دقيقة من التوقف الكامل في الشهر.
لماذا تفشل تنبيهات العتبة الثابتة
تنبيه مثل «معدل الأخطاء فوق 1% لمدة 5 دقائق» حساس أكثر من اللازم وبطيء أكثر من اللازم في آنٍ واحد. فهو يوقظ المناوب لقفزة قصيرة لم تستهلك إلا جزءًا ضئيلًا من الميزانية، ولا ينطلق أبدًا لمعدل أخطاء 0.5% يستنزف الميزانية كلها بصمت خلال أسبوع.
معدل الاستهلاك يحل هذه المشكلة. إنه سرعة استهلاك الميزانية نسبةً إلى الهدف: معدل استهلاك 1 يستهلك الميزانية بالضبط على امتداد النافذة، ومعدل 14.4 يستهلك ميزانية 30 يومًا في ما يزيد قليلًا على يومين.
تنبيهات متعددة النوافذ ومعدلات الاستهلاك
النهج الموصوف في كتاب SRE Workbook من Google يقرن كل عتبة لمعدل الاستهلاك بنافذة طويلة تثبت أن المشكلة جدية، ونافذة قصيرة تثبت أنها ما زالت مستمرة. ولهدف 99.9% خلال 30 يومًا، نقطة بداية شائعة هي:
- إيقاظ: معدل استهلاك فوق 14.4 خلال ساعة وخلال 5 دقائق — استهلاك 2% من الميزانية في ساعة.
- إيقاظ: معدل استهلاك فوق 6 خلال 6 ساعات وخلال 30 دقيقة — استهلاك 5% من الميزانية.
- تذكرة: معدل استهلاك فوق 1 خلال 3 أيام وخلال 6 ساعات — استهلاك 10% من الميزانية.
# Fast-burn page for a 99.9% availability SLO (error budget = 0.001)
(
sum(rate(http_requests_total{job="api", code=~"5.."}[1h]))
/ sum(rate(http_requests_total{job="api"}[1h]))
) > (14.4 * 0.001)
and
(
sum(rate(http_requests_total{job="api", code=~"5.."}[5m]))
/ sum(rate(http_requests_total{job="api"}[5m]))
) > (14.4 * 0.001)
النافذة القصيرة لا تقل أهمية عن الطويلة: ما إن يُطبَّق الإصلاح حتى تنخفض نسبة الدقائق الخمس ويُغلق التنبيه، بدلًا من أن يستمر حتى نهاية الساعة.
تفاصيل تحدد النجاح
- قواعد التسجيل: احسب نسبة الأخطاء لكل نافذة مسبقًا، لكي تبقى تعابير التنبيه خفيفة وسهلة القراءة.
- الحركة المنخفضة: مع طلبات قليلة في الدقيقة يصبح فشل واحد نسبة كبيرة. اشترط حدًا أدنى من الطلبات، أو قِس باستخدام فحوص اصطناعية.
- أهداف زمن الاستجابة: عُدّ الطلبات الأبطأ من العتبة أحداثًا سيئة، باستخدام فئات مدرّج تتضمن قيمة العتبة.
- الاستثناءات: قرّر مسبقًا هل تُحتسب أخطاء العميل وفحوص السلامة، ودوّن ذلك بجوار الهدف.
فيمَ تُستخدم الميزانية
الميزانية أداة لاتخاذ القرار، لا مجرد جهاز استدعاء. ما دامت سليمة يستطيع الفريق الإطلاق أسرع وتحمّل تغييرات أكثر مخاطرة. وحين تنفد، يتقدّم عمل الموثوقية على الميزات حتى يتعافى الاتجاه. اتفق على هذه السياسة مع أصحاب المنتج قبل أول تجاوز، لا أثناءه.