مراقبة أداء السيرفرات في لينكس باستخدام Nagios وPrometheus

مراقبة أداء السيرفرات تعتبر من الخطوات الحيوية لضمان استقرار الخدمات وكفاءة النظام. تُعد أدوات Nagios وPrometheus من أبرز الأدوات المستخدمة في هذا المجال، ولكل منها ميزاتها الفريدة التي تلبي احتياجات مختلفة. في هذا الدليل، سنستعرض كيفية استخدام كل من Nagios وPrometheus لمراقبة أداء السيرفرات في بيئة لينكس، مع مقارنة بينهما وأفضل الممارسات لتحقيق أقصى استفادة منهما.


1. مقدمة عن مراقبة أداء السيرفرات

مراقبة السيرفرات تهدف إلى تتبع الأداء، الكشف المبكر عن المشاكل، وتحليل البيانات لضمان تشغيل سلس ومستقر للخدمات. تساعد هذه المراقبة في:

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

2. مقارنة بين Nagios وPrometheus

الميزة Nagios Prometheus
نموذج البيانات مبني على قواعد بسيطة للتنبيه قاعدة بيانات زمنية مع لغة استعلام قوية (PromQL)
التجميع يعتمد على فحص دوري بواسطة وكلاء أو SNMP جمع البيانات بشكل مستمر عبر Exporters
التنبيهات نظام تنبيهات قوي مع دعم واسع للتكاملات تكامل مع Alertmanager لإدارة وتنظيم التنبيهات
التوسع يمكن أن يصبح معقدًا في البيئات الكبيرة مصمم ليكون قابلًا للتوسع بشكل أفقي
التخزين يعتمد على تخزين محلي أو حلول خارجية تخزين داخلي فعال للبيانات الزمنية
التصور يعتمد على إضافات مثل Nagios Graphs أو Grafana يتكامل بشكل ممتاز مع Grafana
سهولة الإعداد قد يكون معقدًا للإعداد الأولي مرن وسهل الإعداد نسبيًا
المجتمع والدعم مجتمع كبير مع دعم تجاري متاح مجتمع نشط ومتزايد مع دعم تجاري من شركات مختلفة

3. مقدمة إلى Nagios

Nagios هو أحد أقدم وأشهر أدوات مراقبة النظام والشبكات. يوفر Nagios مراقبة شاملة للخوادم، الخدمات، والبنية التحتية، مع قدرات تنبيه قوية عند حدوث مشاكل.

3.1. مميزات Nagios

  • مراقبة شاملة: يمكنه مراقبة مجموعة واسعة من الخدمات مثل HTTP، SSH، SMTP، وغيرها.
  • تنبيهات مخصصة: إرسال تنبيهات عبر البريد الإلكتروني، الرسائل النصية، أو عبر منصات أخرى.
  • إضافات واسعة: دعم العديد من الإضافات والمكونات الإضافية لتوسيع الوظائف.
  • تاريخ طويل: مستقر وموثوق به في بيئات الإنتاج الكبيرة.

3.2. تثبيت Nagios على توزيعة Ubuntu

أ. تثبيت المتطلبات الأساسية:

bash
sudo apt update
sudo apt install -y autoconf gcc libperl-dev make apache2 php libapache2-mod-php7.4 libgd-dev

ب. تنزيل وتثبيت Nagios:

bash
cd /tmp
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.6.tar.gz
tar xzf nagios-4.4.6.tar.gz
cd nagios-4.4.6

./configure --with-httpd-conf=/etc/apache2/sites-enabled
make all
sudo make install
sudo make install-init
sudo make install-config
sudo make install-commandmode
sudo make install-webconf

ج. إعداد المستخدم وكلمة المرور لـ Nagios:

bash
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

اتبع التعليمات لإدخال كلمة المرور.

د. تفعيل وحدات Apache وإعادة تشغيل الخدمة:

bash
sudo a2enmod rewrite
sudo a2enmod cgi
sudo systemctl restart apache2

هـ. بدء خدمة Nagios:

bash
sudo systemctl start nagios
sudo systemctl enable nagios

و. الوصول إلى واجهة Nagios: افتح متصفح الويب وانتقل إلى http://your_server_ip/nagios وسجل الدخول باستخدام بيانات اعتماد nagiosadmin.

3.3. إعداد المراقبة الأساسية في Nagios

أ. إضافة مضيف جديد: حرر ملف المضيفات:

bash
sudo nano /usr/local/nagios/etc/objects/localhost.cfg

أضف تعريف المضيف:

cfg
define host{
use linux-server
host_name server1
alias Server 1
address 192.168.1.101
}

ب. إضافة خدمات للمضيف: أضف تعريف الخدمات التي تريد مراقبتها مثل SSH وHTTP:

cfg
define service{
use generic-service
host_name server1
service_description SSH
check_command check_ssh
}

define service{
use generic-service
host_name server1
service_description HTTP
check_command check_http
}

ج. إعادة تحميل إعدادات Nagios:

bash
sudo systemctl restart nagios

3.4. أفضل الممارسات لـ Nagios

  • تنظيم الملفات: استخدم ملفات تعريف منفصلة لكل مضيف وخدمة لتسهيل الإدارة.
  • استخدام القوالب: استفد من قوالب Nagios لتوحيد إعدادات المضيفات والخدمات.
  • تحديث منتظم: حافظ على تحديث Nagios والإضافات لضمان الأمان والأداء.
  • استخدام الإضافات الخارجية: استغل الإضافات المتاحة لمراقبة خدمات إضافية ومتقدمة.

4. مقدمة إلى Prometheus

Prometheus هو نظام مراقبة وتسجيل بيانات مفتوح المصدر يركز على جمع وتخزين البيانات الزمنية مع قدرات استعلام قوية. يتميز Prometheus بمرونته وسهولة تكامله مع أدوات أخرى مثل Grafana لتصور البيانات.

4.1. مميزات Prometheus

  • قاعدة بيانات زمنية قوية: تخزين البيانات بشكل فعال وسريع.
  • لغة استعلام PromQL: لغة استعلام مرنة وقوية لتحليل البيانات.
  • تجميع البيانات مستمر: جمع البيانات بشكل مستمر ودقيق.
  • تكامل ممتاز مع Kubernetes: مثالي لبيئات الحاويات والسحابة.
  • دعم واسع من المجتمعات: توفر العديد من Exporters والمكونات الإضافية.

4.2. تثبيت Prometheus على توزيعة Ubuntu

أ. إنشاء مستخدم Prometheus:

bash
sudo useradd --no-create-home --shell /bin/false prometheus

ب. تنزيل Prometheus:

bash
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
tar xzf prometheus-2.45.0.linux-amd64.tar.gz

ج. نقل الملفات إلى المواقع المناسبة:

bash
sudo mv prometheus-2.45.0.linux-amd64/prometheus /usr/local/bin/
sudo mv prometheus-2.45.0.linux-amd64/promtool /usr/local/bin/
sudo mv prometheus-2.45.0.linux-amd64/consoles /etc/prometheus/
sudo mv prometheus-2.45.0.linux-amd64/console_libraries /etc/prometheus/

د. إعداد ملفات التكوين:

bash
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo mv prometheus-2.45.0.linux-amd64/prometheus.yml /etc/prometheus/

هـ. ضبط صلاحيات الملفات:

bash
sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool
sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
sudo chown -R prometheus:prometheus /etc/prometheus/prometheus.yml
sudo chown -R prometheus:prometheus /var/lib/prometheus

و. إعداد خدمة Prometheus: انشئ ملف خدمة systemd:

bash
sudo nano /etc/systemd/system/prometheus.service

أضف المحتوى التالي:

ini
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/ \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

د. بدء خدمة Prometheus وتفعيلها:

bash
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

ز. التحقق من عمل Prometheus: افتح المتصفح وانتقل إلى http://your_server_ip:9090 لتصل إلى واجهة Prometheus.

4.3. إعداد Exporters لجمع البيانات

Prometheus يعتمد على Exporters لجمع البيانات من مصادر مختلفة مثل نظام التشغيل، قواعد البيانات، والخدمات.

أ. تثبيت Node Exporter لمراقبة نظام التشغيل:

bash
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar xzf node_exporter-1.6.1.linux-amd64.tar.gz
sudo mv node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/

ب. إعداد خدمة Node Exporter: انشئ ملف خدمة systemd:

bash
sudo nano /etc/systemd/system/node_exporter.service

أضف المحتوى التالي:

ini
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target

ج. بدء خدمة Node Exporter وتفعيلها:

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

د. تعديل ملف تكوين Prometheus لإضافة Node Exporter: حرر ملف prometheus.yml:

bash
sudo nano /etc/prometheus/prometheus.yml

أضف تعريف Job لـ Node Exporter:

yaml
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']

هـ. إعادة تشغيل Prometheus لتحميل التغييرات:

bash
sudo systemctl restart prometheus

5. أمثلة عملية على استخدام Nagios وPrometheus

5.1. مثال عملي باستخدام Nagios

مراقبة خدمة HTTP على مضيف محدد:

أ. إضافة مضيف جديد (مثلاً: webserver1):

cfg
define host{
use linux-server
host_name webserver1
alias Web Server 1
address 192.168.1.102
}

ب. إضافة خدمة HTTP للمضيف:

cfg
define service{
use generic-service
host_name webserver1
service_description HTTP
check_command check_http
}

ج. إعادة تحميل إعدادات Nagios:

bash
sudo systemctl restart nagios

د. التحقق من حالة الخدمة: افتح واجهة Nagios وتأكد من أن خدمة HTTP تعمل بدون مشاكل.

5.2. مثال عملي باستخدام Prometheus

مراقبة استخدام CPU على السيرفر باستخدام Prometheus:

أ. كتابة استعلام PromQL: افتح واجهة Prometheus وانتقل إلى قسم “Graph” واكتب الاستعلام التالي:

promql
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

هذا الاستعلام يعرض متوسط استخدام CPU لكل مضيف.

ب. إنشاء لوحة في Grafana:

  1. تثبيت Grafana:
    bash
    sudo apt install -y software-properties-common
    sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
    wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
    sudo apt update
    sudo apt install grafana -y
    sudo systemctl start grafana-server
    sudo systemctl enable grafana-server
  2. إعداد مصدر بيانات Prometheus في Grafana:
    • افتح متصفح الويب وانتقل إلى http://your_server_ip:3000
    • سجل الدخول (الافتراضي: admin/admin)
    • اذهب إلى “Configuration” > “Data Sources” > “Add data source”
    • اختر Prometheus وأدخل عنوان Prometheus (http://localhost:9090)
    • احفظ الاختيارات.
  3. إنشاء لوحة مراقبة:
    • اذهب إلى “Create” > “Dashboard” > “Add new panel”
    • أدخل استعلام PromQL السابق.
    • اختر نوع الرسم البياني وحفظ اللوحة.

6. أفضل الممارسات لمراقبة السيرفرات باستخدام Nagios وPrometheus

6.1. تصميم الجرد وتنظيمه

  • في Nagios: نظّم المضيفات والخدمات في مجموعات لتسهيل الإدارة.
  • في Prometheus: استخدم تسميات (Labels) منظمة لتصنيف السيرفرات والخدمات.

6.2. استخدام Exporters المناسبة

  • Prometheus: استغل Exporters المتنوعة مثل Node Exporter، MySQL Exporter، وRedis Exporter لمراقبة خدمات محددة.

6.3. تحسين أداء نظام المراقبة

  • تحديد فترات جمع البيانات: تجنب جمع البيانات بشكل متكرر جدًا لتقليل الحمل على السيرفرات.
  • توزيع عبء العمل: في البيئات الكبيرة، استخدم Prometheus Federation لتوزيع عبء جمع البيانات.

6.4. إعداد التنبيهات بذكاء

  • في Nagios: استخدم تنبيهات متعددة المستويات لتحديد أولويات المشكلات.
  • في Prometheus: استخدم Alertmanager لتنظيم وإدارة التنبيهات بشكل فعال.

6.5. توثيق وإدارة الإعدادات

  • استخدام أنظمة التحكم في الإصدارات: مثل Git لتتبع تغييرات إعدادات Nagios وPrometheus.
  • توثيق الإعدادات: احتفظ بتوثيق مفصل عن كيفية إعداد المراقبة والإضافات المستخدمة.

6.6. الأمان والحماية

  • تأمين واجهات المراقبة: استخدم HTTPS وتحقق من الهوية للوصول إلى واجهات Nagios وPrometheus.
  • تقييد الوصول: تأكد من أن فقط المستخدمين المصرح لهم يمكنهم تعديل إعدادات المراقبة.

6.7. التكامل مع أدوات أخرى

  • Grafana: استخدم Grafana لتصور البيانات المجمعة من Prometheus بشكل مرئي وجذاب.
  • أدوات الأتمتة: مثل Ansible لتوزيع إعدادات المراقبة وتحديثها تلقائيًا.

7. أدوات مساعدة وتكاملات

7.1. Grafana

  • وصف: أداة تصور بيانات مفتوحة المصدر تدعم Prometheus وNagios.
  • استخدامها: إنشاء لوحات مراقبة تفاعلية وجذابة لعرض بيانات الأداء والتنبيهات.

7.2. Alertmanager (لـ Prometheus)

  • وصف: أداة لإدارة وتنظيم التنبيهات المرسلة من Prometheus.
  • استخدامها: تجميع التنبيهات، تصفية التنبيهات المتكررة، وتوجيه التنبيهات إلى قنوات مختلفة مثل البريد الإلكتروني، Slack، أو PagerDuty.

7.3. Exporters

  • وصف: مكونات إضافية لجمع بيانات محددة من السيرفرات والخدمات.
  • أمثلة:
    • Node Exporter: لمراقبة موارد النظام الأساسية مثل CPU، الذاكرة، والتخزين.
    • Blackbox Exporter: لمراقبة الخدمات الخارجية مثل HTTP، HTTPS، وICMP.

7.4. تكامل مع أدوات CI/CD

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

8. موارد تعليمية إضافية


خاتمة

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

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

من geekadmin