مراقبة السيرفر بـPrometheus وGrafana: من الرقم إلى التنبيه
node_exporter يجمع CPU والذاكرة والقرص والشبكة، وPrometheus يخزّنها كسلاسل زمنية، وGrafana يعرضها ويطلق التنبيه. نشرح كيف تبني لوحة مفيدة وتضبط تنبيهاً يصلك قبل أن يمتلئ القرص أو تنفد الذاكرة.
مراقبة السيرفر باستعمال Prometheus وGrafana تقوم على ثلاثة أدوار واضحة: عميل جمع مثل node_exporter يقرأ مقاييس النظام من المعالج والذاكرة والقرص والشبكة ويعرضها على منفذ داخلي، وPrometheus يسحب هذه المقاييس كل بضع ثوانٍ ويخزّنها كسلاسل زمنية مع طوابعها الزمنية، وGrafana يتصل بـPrometheus ويرسم منها لوحات بيانية ويطلق التنبيهات عند تجاوز عتبة. الفكرة الأساسية أن كل شيء يتحوّل إلى رقم عبر الزمن، فتستطيع أن ترى الاتجاه لا اللحظة فقط، وأن يصلك إنذار قبل أن تتحوّل المشكلة إلى انقطاع.
الحد الأدنى العملي لأي سيرفر إنتاج: ثبّت node_exporter على الجهاز المُراقَب، وشغّل Prometheus ليسحب منه كل 15 ثانية، وأضف Grafana كواجهة، ثم ابنِ لوحة تعرض استهلاك المعالج، ونسبة الذاكرة المستعملة، والمساحة المتبقية على القرص، وحركة الشبكة، ومتوسط الحمل. بعدها اضبط قاعدتي تنبيه على الأقل: القرص يقترب من الامتلاء، والذاكرة تقترب من النفاد. هذا وحده يكفي لتفادي أشهر أسباب توقف الخدمة المفاجئ. بقية الدليل يشرح كل مكوّن ودوره، وكيف تبني لوحة تقرأها بلمحة، وكيف تصوغ تنبيهاً يصل في الوقت المناسب لا متأخراً.
الأدوار الثلاثة: من يجمع، من يخزّن، من يعرض
يخلط كثيرون بين المكوّنات، فالتفريق بينها يوضّح الصورة. node_exporter برنامج صغير يعمل على السيرفر الذي تريد مراقبته، يقرأ حالة النظام من نواة لينكس ويقدّمها كنص أرقام على منفذ HTTP داخلي. هو لا يخزّن شيئاً ولا يرسم شيئاً، فقط يكشف اللحظة الحالية عند الطلب.
Prometheus هو المحرّك: قاعدة بيانات سلاسل زمنية تسحب المقاييس من كل عميل جمع على فترات منتظمة، وتخزّنها مع الطابع الزمني، وتوفّر لغة استعلام قوية اسمها PromQL لحساب المعدلات والفروق والتجميعات. هو مصدر الحقيقة للأرقام عبر الزمن. Grafana هي الطبقة البصرية: تتصل بـPrometheus كمصدر بيانات، وترسم اللوحات، وتدير التنبيهات وقنوات الإرسال مثل البريد أو Slack. هذا الفصل يجعل كل جزء قابلاً للاستبدال ويجعل النظام مرناً.
ماذا يقيس node_exporter فعلياً
يكشف node_exporter مئات المقاييس، لكن القليل منها هو ما تنظر إليه يومياً. أهمها:
| المقياس | ماذا يخبرك | متى يقلقك |
|---|---|---|
| استهلاك المعالج | نسبة انشغال الـvCPU | ثبات فوق 85% لفترة طويلة |
| الذاكرة المستعملة | كم من الرام مشغول فعلياً | اقتراب من الحد مع بدء استعمال swap |
| مساحة القرص | المتبقي على كل قسم | أقل من 15% متبقٍّ |
| متوسط الحمل | طول طابور العمليات المنتظرة | أعلى من عدد الأنوية باستمرار |
| حركة الشبكة | بايتات داخلة وخارجة | قفزات مفاجئة أو تشبّع الحد |
| معدل I/O على القرص | ضغط القراءة والكتابة | انتظار طويل يبطّئ كل شيء |
الذاكرة والقرص هما القاتلان الصامتان. امتلاء القرص يوقف قاعدة البيانات عن الكتابة فجأة، ونفاد الذاكرة يدفع النظام لقتل العمليات. المعالج بالمقابل يتحمّل الذروات العابرة، فالخطر منه هو الثبات العالي المستمر لا القفزة اللحظية. لهذا تراقب الذاكرة والقرص كعتبات صارمة، وتراقب المعالج كاتجاه.
بناء لوحة تقرأها بلمحة
اللوحة المفيدة ليست أكثر اللوحات رسوماً، بل أوضحها. رتّب صفاً علوياً بأربعة أرقام كبيرة مباشرة: نسبة المعالج، نسبة الذاكرة، المساحة المتبقية على القرص، ومتوسط الحمل. هذه لمحة الصحة في ثانية. تحتها ضع رسوماً زمنية لكل مقياس على مدى الساعات الأخيرة، لأن الاتجاه يكشف ما لا تكشفه اللحظة: هل الذاكرة تتسرّب ببطء صعوداً، أم القرص يمتلئ بمعدل ثابت ينذر بالامتلاء بعد أيام.
في Grafana تُبنى كل لوحة من استعلام PromQL. مثلاً نسبة القرص المتبقية تُحسب من مقياس المساحة الحرة مقسوماً على السعة الكلية، ونسبة الذاكرة من المستعمَل على المتاح. احفظ اللوحة، واضبط تحديثها كل 30 ثانية، ونطاق العرض الافتراضي على آخر 6 ساعات مع إمكانية التوسيع. هذه اللوحة تصبح شاشتك الأولى صباح كل يوم. إن كنت تشغّل خادماً واحداً أو أسطولاً صغيراً على الخادم السحابي من كلاود، فلوحة واحدة بمتغيّر يختار السيرفر تكفي لمتابعة الجميع.
من الرقم إلى التنبيه
الرسم الجميل بلا فائدة إن كنت لا تنظر إليه لحظة العطل. قيمة المراقبة الحقيقية في التنبيه الذي يصلك قبل الكارثة. Grafana وPrometheus يدعمان قواعد تنبيه تُطلق حين يتجاوز مقياس عتبة لمدة معيّنة. المدة مهمة: لا تريد إنذاراً على قفزة معالج لثانيتين، بل على ثبات فوق 90% لخمس دقائق مثلاً.
ابدأ بثلاث قواعد تكفي معظم الحالات:
- القرص يمتلئ: المتبقي أقل من 15% لأكثر من 10 دقائق. هذا يمنحك مهلة للتنظيف قبل التوقف.
- الذاكرة على الحافة: المستعمل فوق 90% مع بدء استعمال swap. مؤشر مبكر على حاجة لترقية أو تسرّب ذاكرة.
- السيرفر لا يستجيب: توقّف Prometheus عن الحصول على مقاييس من العميل لأكثر من دقيقتين. قد يعني أن الجهاز نفسه سقط.
اربط هذه التنبيهات بقناة تصلك فعلاً: Slack أو بريد مُراقَب أو رسالة. تنبيه في مكان لا تراه كأنه غير موجود.
PromQL: كيف تحوّل العدّاد إلى معدل
كثير من مقاييس Prometheus عدّادات تتراكم لا قيم لحظية، مثل إجمالي البايتات المنقولة منذ إقلاع الجهاز. القيمة الخام لهذا العدّاد لا تعني شيئاً وحدها، فالمفيد هو معدل تغيّره في الدقيقة. هنا يأتي دور دالة rate في لغة PromQL التي تحسب المعدل عبر نافذة زمنية، فتحوّل رقماً متصاعداً بلا معنى إلى سرعة نقل شبكة يمكن رسمها ومقارنتها. نفس المبدأ ينطبق على معدل طلبات القرص ومعدل أخطاء الخدمة.
الفائدة العملية أن اللوحة الجيدة تعرض معدلات لا أرقاماً خاماً. متوسط استهلاك المعالج يُحسب من فرق وقت الخمول عبر الزمن، لا من قيمة لحظية مضلّلة. حين تفهم أن المقياس عدّاد تراكمي، تعرف أنك تطبّق عليه دالة معدل قبل رسمه، وهذا الفرق البسيط يميّز لوحة تكشف الحقيقة من لوحة تعرض أرقاماً لا تعني شيئاً. لا تحتاج إتقان اللغة كاملة، بل بضع دوال: rate للمعدلات، وحساب النسب المئوية بالقسمة، وتجميع القيم عبر عدة أجهزة عند مراقبة أسطول.
الاحتفاظ بالتاريخ: كم تخزّن؟
Prometheus يخزّن المقاييس بدقة عالية لكل نقطة، فكلما زادت مدة الاحتفاظ ودقة السحب زاد حجم القرص المطلوب. القاعدة العملية أن تحتفظ بأسبوعين إلى شهر من التاريخ عالي الدقة لتحليل الحوادث، وهذا يكفي معظم الفرق الصغيرة. إن أردت اتجاهات طويلة المدى لأشهر، فالحل خفض الدقة للبيانات القديمة أو تصديرها لتخزين أرخص، لا الاحتفاظ بكل نقطة بدقة الثانية إلى الأبد. وازن بين عمق التاريخ الذي تحتاجه فعلاً والقرص المتاح في باقتك، فالتاريخ الطويل جميل لكنه يأكل مساحة تنمو باطراد.
حجم السيرفر المناسب للمراقبة
Prometheus وGrafana خفيفان نسبياً لأسطول صغير، فقاعدة السلاسل الزمنية تكتب باستمرار لكن حجم البيانات معقول ما لم تراقب مئات الأجهزة. لبيئة مراقبة مركزية تخدم بضعة سيرفرات، تكفي باقة نمو بمعالجين وذاكرة 4GB لتشغيل Prometheus وGrafana معاً براحة، مع قرص كافٍ لحفظ تاريخ المقاييس بالمدة التي تريدها. كلما طالت مدة الاحتفاظ احتجت مساحة أكبر، فوازن بين عمق التاريخ والقرص المتاح. تفاصيل الموارد لكل باقة في صفحة الأسعار.
إن كنت تشغّل أدوات ذكاء اصطناعي أو خدمات كثيرة تستهلك موارد متغيّرة، فالمراقبة تصبح أهم لا أقل، لأنها تكشف أي خدمة تلتهم الذاكرة. الاستضافة المخصصة لهذه الأحمال تجدها في استضافة الذكاء الاصطناعي مع قوالب جاهزة تختصر الإعداد.
خطة التطبيق
نفّذ بهذا الترتيب: ثبّت node_exporter على كل سيرفر تريد مراقبته، وشغّل Prometheus على سيرفر المراقبة واضبطه ليسحب من كل عميل كل 15 ثانية، وأضف Grafana واربطه بـPrometheus كمصدر بيانات. بعدها ابنِ اللوحة بأربعة أرقام علوية ورسوم زمنية، ثم اضبط قواعد التنبيه الثلاث ووصّلها بقناة تراها. اختبر التنبيه بافتعال حالة، مثل ملء القرص مؤقتاً بملف، لتتأكد أن الإنذار يصل فعلاً. بعد أسبوع من التشغيل راجع اللوحة وأزل ما لا تنظر إليه، وأضف ما اكتشفت أنك تحتاجه، فاللوحة الجيدة تتطور مع فهمك لسيرفرك لا تولد كاملة من أول يوم. المراقبة التي لم تُختبر تنبيهاتها ليست مراقبة، بل شعور زائف بالأمان.


