مراقبة النظام والخدمات (Monitoring) باستخدام Prometheus و Grafana

دقائق القراءة: 6

مراقبة النظام والخدمات (Monitoring) باستخدام Prometheus و Grafana

لم تعد مراقبة الخوادم والتطبيقات رفاهية تشغيلية، بل أصبحت جزءاً أساسياً من استقرار أي بيئة عمل حديثة. فمع زيادة عدد الخدمات، وتوسع البنية التحتية، يصبح الاعتماد على الملاحظة اليدوية أو الفحص المتقطع سبباً مباشراً في تأخر اكتشاف الأعطال. هنا يظهر دور أدوات المراقبة الحديثة مثل Prometheus وGrafana في توفير رؤية دقيقة وفورية لحالة النظام.

يُستخدم Prometheus لجمع المقاييس الزمنية Time Series Metrics من الأنظمة والخدمات، بينما يتولى Grafana عرض هذه البيانات في لوحات مرئية احترافية تسهّل التحليل واتخاذ القرار. هذا التكامل يمنح فرق التشغيل والصيانة وسيلة قوية لمتابعة الأداء، واكتشاف الاختناقات، وبناء تنبيهات استباقية قبل أن تتأثر الخدمة.

إذا كنت قد اطلعت سابقاً على فهم العمليات (Processes) ومراقبة استهلاك الموارد (top, htop, ps, kill) فستعرف أن أدوات الطرفية ممتازة للفحص اللحظي، لكنها لا تحتفظ بسجل تاريخي غني. أما في بيئات الإنتاج، فنحن نحتاج إلى مراقبة مستمرة، ورسوم بيانية، وتنبيهات ذكية، وربط بين أداء النظام والخدمات والشبكة والسجلات.

ما الفرق بين Prometheus و Grafana؟

Prometheus هو محرك جمع واستعلام عن المقاييس. يقوم بسحب البيانات بشكل دوري من أهداف مراقبة تعرف باسم targets عبر بروتوكول HTTP. ثم يخزن هذه القيم كسلاسل زمنية يمكن استجوابها بلغة PromQL.

أما Grafana فهو طبقة العرض والتحليل. يمكنه الاتصال بـ Prometheus كمصدر بيانات ثم إنشاء لوحات معلومات Dashboards تعرض استهلاك المعالج، والذاكرة، والقرص، وزمن الاستجابة، وحالة الخدمات، وغيرها.

  • Prometheus: جمع البيانات، التخزين، الاستعلام، وبعض وظائف التنبيه.
  • Grafana: التصور البصري، بناء الرسوم، مشاركة اللوحات، ومتابعة المؤشرات بشكل واضح.

متى تحتاج إلى هذا النوع من المراقبة؟

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

كما أن المراقبة مفيدة جداً عند دراسة أثر التغييرات بعد تحديث الحزم أو إعادة ضبط الخدمة. وهنا يرتبط الموضوع بشكل مباشر مع إدارة الخدمات باستخدام (systemd) و (systemctl) ومع إدارة الحزم البرمجية وتحديث النظام لأن أي تحديث أو إعادة تشغيل يجب أن يُقاس أثره على الأداء لا أن يُفترض نجاحه فقط.

البنية الأساسية للعمل

في أبسط سيناريو، يعمل Prometheus على خادم مركزي، ثم يجمع البيانات من الخوادم الأخرى بواسطة أدوات تصدير تعرف باسم Exporters. أشهرها Node Exporter لجمع بيانات النظام مثل المعالج والذاكرة والقرص والشبكة.

يمكن بعد ذلك ربط Grafana مع Prometheus لرسم المؤشرات. وإذا رغبت في التنبيه عبر البريد أو تطبيقات الدردشة، يمكن لاحقاً إضافة Alertmanager.

مكونات المنظومة باختصار

  • Prometheus Server لجمع المقاييس.
  • Node Exporter لبيانات النظام.
  • Grafana لبناء اللوحات.
  • Alertmanager للتنبيهات المتقدمة.

خطوات تثبيت Prometheus و Node Exporter

تختلف طريقة التثبيت بحسب التوزيعة، لكن الفكرة واحدة: تنزيل الحزمة، إنشاء مستخدم خدمة، وضبط ملف الإعداد. إذا كنت بحاجة إلى فهم مواقع الملفات القياسية، فمقال هيكلية ملفات لينكس (Filesystem Hierarchy Standard – FHS) يساعدك على فهم أماكن مثل /etc و/usr/local/bin.

مثال مبسط على تثبيت Node Exporter يدوياً:

wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz
tar -xvf node_exporter-*.linux-amd64.tar.gz
cd node_exporter-*.linux-amd64
sudo cp node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter

بعد ذلك تنشئ ملف خدمة خاصاً بـ systemd ثم تبدأ الخدمة. هذه الخطوة تصبح أوضح إذا كنت قد قرأت إدارة الخدمات باستخدام (systemd) و (systemctl).

sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
sudo systemctl status node_exporter

بعد تشغيله، ستظهر المقاييس على المنفذ 9100. ويمكنك التحقق باستخدام المتصفح أو أمر curl.

إعداد Prometheus لجمع البيانات

الملف الأهم هو prometheus.yml، وداخله تحدد الفواصل الزمنية ومصادر السحب. المثال التالي يوضح مراقبة الخادم المحلي عبر Node Exporter:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node_exporter"
    static_configs:
      - targets: ["localhost:9100"]

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

لا تترك منافذ المراقبة مفتوحة للعالم الخارجي دون ضوابط. من الأفضل تقييد الوصول عبر جدار ناري، أو تشغيل الأدوات خلف Reverse Proxy آمن، أو حصرها على شبكة داخلية فقط.

ربط Grafana وبناء لوحات مفيدة

بعد تثبيت Grafana، أضف Prometheus كمصدر بيانات عبر عنوان مثل http://localhost:9090. بعدها يمكنك استيراد لوحات جاهزة أو إنشاء لوحة مخصصة تناسب بنيتك.

من أفضل المؤشرات التي يُنصح بإظهارها في البداية:

  • استهلاك المعالج CPU Usage.
  • استهلاك الذاكرة Memory Usage.
  • المساحة الحرة في الأقراص.
  • سرعة الإدخال والإخراج Disk I/O.
  • الشبكة: الاستقبال والإرسال والأخطاء.
  • مدة عمل الخادم Uptime.

أمثلة عملية على الاستعلامات

تكمن قوة PromQL في تحويل الأرقام الخام إلى مؤشرات تشغيلية مفيدة. على سبيل المثال، يمكن حساب نسبة انشغال المعالج أو تتبع نمو استهلاك الذاكرة خلال فترة زمنية محددة.

ومع دمج هذه المؤشرات مع السجلات الواردة في مراقبة السجلات (Logs) وتحليل الأخطاء، تحصل على رؤية أشمل: متى ارتفع الحمل؟ وما الرسائل التي ظهرت في نفس التوقيت؟ هذا الربط بين القياسات والسجلات يقلل كثيراً من زمن التشخيص.

التنبيهات: من الرصد إلى الاستجابة

المراقبة الحقيقية لا تكتمل بدون تنبيهات. يمكن تعريف قواعد تنبيه عند تجاوز عتبات معينة، مثل وصول استهلاك القرص إلى 85% أو توقف خدمة مهمة عن الاستجابة. بهذه الطريقة لا تنتظر حتى يمتلئ القسم أو تتعطل الخدمة بالكامل.

مثال على حالات تستحق التنبيه:

  • ارتفاع استهلاك الذاكرة بشكل غير طبيعي.
  • امتلاء قسم مثل /var أو /home.
  • توقف خدمة ويب أو قاعدة بيانات.
  • قفزات كبيرة في زمن الاستجابة أو أخطاء الشبكة.

لا تضبط التنبيهات بعشوائية. كثرة التنبيهات منخفضة القيمة تسبب ما يعرف بـ Alert Fatigue، أي أن الفريق يبدأ بتجاهل الرسائل. اجعل كل تنبيه قابلاً للتنفيذ وله أهمية تشغيلية واضحة.

أفضل الممارسات في بيئات الإنتاج

للحصول على منظومة مراقبة موثوقة، احرص على تسمية الأهداف والخدمات بوضوح، وتنظيم اللوحات بحسب نوع الخدمة أو البيئة مثل production وstaging. كذلك من المهم حماية واجهات الإدارة وتحديث الأدوات باستمرار.

إذا كنت تدير عدداً كبيراً من الخوادم، فقد يصبح نشر Exporters وتعديل الإعدادات يدوياً أمراً مرهقاً، وهنا يفيدك كثيراً منهج الأتمتة باستخدام Ansible لتوحيد النشر وتقليل الأخطاء البشرية.

الخلاصة

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

ابدأ بمراقبة الموارد الأساسية عبر Node Exporter، ثم وسّع المنظومة تدريجياً لمراقبة التطبيقات، وقواعد البيانات، والخدمات العامة. كل خطوة إضافية في المراقبة المدروسة تعني وقت تعطل أقل، وقرارات أسرع، وتجربة أكثر استقراراً للمستخدم النهائي.

10 comments

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *