العمليات
الفرق بين المراقبة وقابلية الرصد في الأنظمة الموزعة
تُبلغ المراقبة بأن شيئًا متوقعًا تعطله قد تعطل. أما قابلية الرصد فتتيح معرفة سبب حدوث أمر غير متوقع، وهو ما ينطبق على معظم الحوادث حين يتوزع النظام عبر خدمات وطوابير وذاكرات تخزين مؤقت ومناطق.
المراقبة تجيب عن الأسئلة المعروفة
تُبنى المراقبة التقليدية حول أسئلة معروفة مسبقًا: هل الخادم يعمل، وهل تجاوز استخدام المعالج 80 بالمئة، وهل القرص يمتلئ، وهل انتهت المهمة الليلية. يختار المشغّل إشارة ويضع حدًا وينطلق التنبيه عند تجاوزه. وهذا ينجح مع عدد قليل من الخوادم التي تشغّل تطبيقًا أحادي البنية، لأن قائمة الأعطال المحتملة قصيرة ويحفظها المناوبون عن ظهر قلب.
يكمن القيد في أن كل فحص يجسّد توقعًا. وحين يكون العطل مما لم يتوقعه أحد، كتبعية لاحقة بطيئة، أو موجة من إعادة المحاولات، أو ذاكرة تخزين مؤقت تعمل تقنيًا لكنها تعيد بيانات قديمة، تبقى لوحات المعلومات خضراء بينما يشتكي العملاء. تظل المراقبة ضرورية، لكنها لم تعد كافية حين يتجاوز النظام ما يستطيع شخص واحد تصوّره.
ما الذي يغيّره التوزيع
انقل وظيفة الأعمال نفسها إلى اثنتي عشرة خدمة يتوسطها طابور رسائل، وستتغير ثلاثة أمور. أولًا، يمر طلب المستخدم الواحد الآن بعمليات كثيرة على خوادم كثيرة، فلا يروي ملف سجل واحد القصة كاملة. ثانيًا، تصبح الأعطال جزئية: منطقة واحدة أو مستأجر واحد أو مسار برمجي واحد يبطئ بينما يبدو الإجمالي سليمًا. ثالثًا، يتغير النظام مرات عديدة في اليوم، فلم يعد خط الأساس للأمس صالحًا.
قابلية الرصد هي القدرة على فهم الحالة الداخلية للنظام من البيانات التي يُصدرها، دون نشر شيفرة جديدة لطرح سؤال جديد. وعمليًا، تعني جمع بيانات قياس عن بُعد غنية وعالية التنوع (أي عميل، وأي نقطة نهاية، وأي إصدار، وأي منطقة) والقدرة على تقسيمها عند الطلب. فيتحول السؤال من «هل النظام يعمل؟» إلى «أي المستخدمين يعانون البطء، ومنذ متى، وما الذي تغيّر؟».
الإشارات الثلاث والغرض منها
المقاييس والسجلات والتتبعات ثلاثة أنواع مختلفة من البيانات. يجيب كلٌّ منها عن سؤال مختلف، وتأتي القيمة من القدرة على التنقل بينها.
المقاييس
أرقام مجمّعة عبر الزمن: معدل الطلبات، ومعدل الأخطاء، والشرائح المئوية لزمن الاستجابة، وعمق الطابور. وهي منخفضة تكلفة التخزين، وسريعة الاستعلام، ومناسبة للتنبيه ولاكتشاف حدوث تغيير. تُظهر ما حدث ومتى، ونادرًا ما تُظهر السبب.
السجلات
أحداث منفصلة مع سياقها. السجلات المنظّمة (JSON بحقول متسقة) قابلة للبحث والربط؛ أما سجلات النص الحر فيقرؤها الأشخاص واحدًا تلو الآخر. وتحمل السجلات التفاصيل، بتكلفة لكل بايت تزداد بزيادة حركة البيانات.
التتبعات
مسار طلب واحد عبر الخدمات، مع توقيت كل مرحلة. يُظهر التتبع أين استُهلك الوقت وأي تبعية فشلت. ومع معرّف تتبع مشترك في كل سطر من السجل، يستطيع المهندس الانتقال من تتبع بطيء إلى قيود السجل الدقيقة التي تقف وراءه.
أهداف مستوى الخدمة أساسًا للتنبيه
هدف مستوى الخدمة غاية لمقياس يمس المستخدم: على سبيل المثال، اكتمال 99.9 بالمئة من طلبات إتمام الشراء بنجاح خلال 500 مللي ثانية، مقيسة على مدى 30 يومًا. تحدد المؤسسة النسبة والفترة؛ والمهم أن هدف مستوى الخدمة (SLO) يصف ما يعيشه المستخدمون لا ما يُبلغ عنه الخادم.
يحدد هدف مستوى الخدمة ميزانية أخطاء، أي مقدار الإخفاق الذي يمكن استيعابه خلال الفترة، ومعها نموذجًا مختلفًا للتنبيه. فبدلًا من استدعاء المناوب حين يتجاوز استخدام المعالج حدًا ما، يستدعيه الفريق حين تُستهلك الميزانية بسرعة لا تكفي لبقية الفترة (تنبيه معدل الاستهلاك). ويتحول الاستهلاك البطيء إلى تذاكر ليوم العمل التالي؛ بينما يستدعي الاستهلاك السريع المهندس المناوب. وهذا التغيير وحده يزيل معظم التنبيهات التي تنطلق دون أن يحتاج أحد إلى التصرف.
كما تمنح أهداف مستوى الخدمة فريق الهندسة وإدارة الأعمال لغة مشتركة. فإذا كانت الميزانية في وضع جيد، يستطيع الفريق الإطلاق أسرع؛ وإذا كانت تُستنزف، يستثمر الفريق في الموثوقية. ولا يستطيع رسم بياني لاستخدام المعالج أن يدعم هذا الحوار.
إرهاق التنبيهات وجداول المناوبة
أكثر إخفاقات برامج المراقبة شيوعًا هو فائض التنبيهات لا نقصها. فحين تتلقى المناوبة عشرات الاستدعاءات أسبوعيًا ومعظمها لا يتطلب أي إجراء، يتوقف الأشخاص عن قراءتها، ويضيع التنبيه المهم وسط الضجيج. ويجب أن يجتاز كل تنبيه اختبارًا بسيطًا: أن يستطيع شخص فعل شيء حياله فورًا. وإن لم يكن كذلك، فمكانه لوحة معلومات أو تقرير يومي لا استدعاء.
تعامل مع مجموعة التنبيهات كشيفرة خاضعة للمراجعة. لكل تنبيه مسؤول ورابط دليل تشغيل وسبب لوجوده؛ والتنبيهات التي تنطلق شهرًا دون أي إجراء تُحذف أو تُخفَّض أولويتها. وقِس المناوبة نفسها: الاستدعاءات أسبوعيًا، والاستدعاءات خارج ساعات العمل، ووقت الإقرار. فالمناوبة السليمة علامة على نظام سليم، والمناوبة المرهقة إشارة واضحة إلى موضع الاستثمار.
وتضيف الأنظمة الموزعة متطلبًا آخر: أن تحمل التنبيهات سياقها. فالاستدعاء الذي يقول «معدل أخطاء مرتفع في payments-api» مهمة بحث؛ أما الاستدعاء الذي يربط بهدف مستوى الخدمة المتأثر وآخر عملية نشر ونقطة النهاية الأكثر إخفاقًا فهو قرار.
تكلفة بيانات القياس عن بُعد
لبيانات قابلية الرصد تكلفة، وغالبًا ما تصل الفاتورة بعد أن تترسخ العادة. والعاملان المحركان لها هما الحجم (بايتات السجلات والمقاطع لكل طلب مضروبة في حركة البيانات) والتنوع (عدد التركيبات المميزة للتسميات على المقياس الواحد). فالمقياس الموسوم بمعرّف المستخدم أو معرّف الطلب ينتج سلسلة زمنية جديدة لكل قيمة، ويُثقل أي مخزن للمقاييس.
الإعدادات الافتراضية المدروسة تُحدث فرقًا كبيرًا. احتفظ بالمعرّفات عالية التباين (high-cardinality) في التتبعات والسجلات المنظّمة بدلًا من تسميات المقاييس. خذ عيّنات من التتبعات مع الإبقاء على كل خطأ وكل طلب بطيء ونسبة من الطلبات العادية. حدّد مدة الاحتفاظ لكل نوع من الإشارات: المقاييس لمدة عام بدقة مخفّضة، والسجلات لأسابيع، والتتبعات لأيام، مع طبقة أرشفة لكل ما يتطلبه الامتثال. راجع شهريًا أكثر المصادر إنتاجًا لحجم السجلات؛ فعبارة تصحيح مُسهبة واحدة في مسار كثيف الاستخدام قد تستأثر بجزء كبير من الفاتورة.
الهدف هو القدرة على الإجابة بسرعة عن السؤال التالي غير المتوقع، وبتكلفة تقبل المؤسسة الاستمرار في تحمّلها، لا جمع كل شيء.
من أين تبدأ
للفرق التي تنتقل من مراقبة الخوادم إلى قابلية الرصد، هذا الترتيب في العمل هو الأسرع عائدًا.
- حدّد اثنين أو ثلاثة من أهداف مستوى الخدمة (SLO) لمسارات المستخدم الأهم، واضبط التنبيهات على معدل الاستهلاك (burn rate) بدلًا من العتبات المطلقة.
- اعتمد التسجيل المنظّم بمجموعة حقول موحّدة، تتضمن معرّف التتبع، في جميع الخدمات.
- زوّد مسار الطلبات بالتتبع الموزّع؛ إذ تجعل المعايير المفتوحة وحزم SDK ذلك تغييرًا في المكتبات لا إعادة كتابة.
- أنشئ لوحة معلومات واحدة لكل خدمة حول الإشارات الأربع التي يشعر بها المستخدمون: حجم الحركة، والأخطاء، وزمن الاستجابة، والتشبّع.
- راجع التنبيهات وحجم بيانات القياس شهريًا، واحذف ما لا يتصرّف بناءً عليه أحد.
أجب عن السؤال التالي دون إضافة أداة أخرى
يستطيع فريقك الإجابة عن السؤال التالي من مكان واحد. يجمع SnowTrack بيانات قياس البنية التحتية والتطبيقات والخدمات وأهداف مستوى الخدمة والتنبيهات للأنظمة التي تشغّلها بالفعل.