مراقبة أداء السيرفرات في لينكس باستخدام 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
أ. تثبيت المتطلبات الأساسية:
sudo apt update
sudo apt install -y autoconf gcc libperl-dev make apache2 php libapache2-mod-php7.4 libgd-dev
ب. تنزيل وتثبيت Nagios:
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:
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
اتبع التعليمات لإدخال كلمة المرور.
د. تفعيل وحدات Apache وإعادة تشغيل الخدمة:
sudo a2enmod rewrite
sudo a2enmod cgi
sudo systemctl restart apache2
هـ. بدء خدمة Nagios:
sudo systemctl start nagios
sudo systemctl enable nagios
و. الوصول إلى واجهة Nagios: افتح متصفح الويب وانتقل إلى http://your_server_ip/nagios
وسجل الدخول باستخدام بيانات اعتماد nagiosadmin
.
3.3. إعداد المراقبة الأساسية في Nagios
أ. إضافة مضيف جديد: حرر ملف المضيفات:
sudo nano /usr/local/nagios/etc/objects/localhost.cfg
أضف تعريف المضيف:
define host{
use linux-server
host_name server1
alias Server 1
address 192.168.1.101
}
ب. إضافة خدمات للمضيف: أضف تعريف الخدمات التي تريد مراقبتها مثل SSH وHTTP:
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:
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:
sudo useradd --no-create-home --shell /bin/false prometheus
ب. تنزيل Prometheus:
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
ج. نقل الملفات إلى المواقع المناسبة:
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/
د. إعداد ملفات التكوين:
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
sudo mv prometheus-2.45.0.linux-amd64/prometheus.yml /etc/prometheus/
هـ. ضبط صلاحيات الملفات:
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:
sudo nano /etc/systemd/system/prometheus.service
أضف المحتوى التالي:
[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 وتفعيلها:
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 لمراقبة نظام التشغيل:
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:
sudo nano /etc/systemd/system/node_exporter.service
أضف المحتوى التالي:
[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 وتفعيلها:
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
د. تعديل ملف تكوين Prometheus لإضافة Node Exporter: حرر ملف prometheus.yml
:
sudo nano /etc/prometheus/prometheus.yml
أضف تعريف Job لـ Node Exporter:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']
هـ. إعادة تشغيل Prometheus لتحميل التغييرات:
sudo systemctl restart prometheus
5. أمثلة عملية على استخدام Nagios وPrometheus
5.1. مثال عملي باستخدام Nagios
مراقبة خدمة HTTP على مضيف محدد:
أ. إضافة مضيف جديد (مثلاً: webserver1):
define host{
use linux-server
host_name webserver1
alias Web Server 1
address 192.168.1.102
}
ب. إضافة خدمة HTTP للمضيف:
define service{
use generic-service
host_name webserver1
service_description HTTP
check_command check_http
}
ج. إعادة تحميل إعدادات Nagios:
sudo systemctl restart nagios
د. التحقق من حالة الخدمة: افتح واجهة Nagios وتأكد من أن خدمة HTTP تعمل بدون مشاكل.
5.2. مثال عملي باستخدام Prometheus
مراقبة استخدام CPU على السيرفر باستخدام Prometheus:
أ. كتابة استعلام PromQL: افتح واجهة Prometheus وانتقل إلى قسم “Graph” واكتب الاستعلام التالي:
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
هذا الاستعلام يعرض متوسط استخدام CPU لكل مضيف.
ب. إنشاء لوحة في Grafana:
- تثبيت 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
- إعداد مصدر بيانات Prometheus في Grafana:
- افتح متصفح الويب وانتقل إلى
http://your_server_ip:3000
- سجل الدخول (الافتراضي: admin/admin)
- اذهب إلى “Configuration” > “Data Sources” > “Add data source”
- اختر Prometheus وأدخل عنوان Prometheus (
http://localhost:9090
) - احفظ الاختيارات.
- افتح متصفح الويب وانتقل إلى
- إنشاء لوحة مراقبة:
- اذهب إلى “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 Documentation: https://www.nagios.org/documentation/
- Prometheus Documentation: https://prometheus.io/docs/
- Grafana Documentation: https://grafana.com/docs/
- Ansible for Nagios: Ansible Nagios Modules
- دورات تعليمية عبر الإنترنت:
- Udemy: دورات متخصصة في Nagios وPrometheus.
- Coursera: دورات حول مراقبة الأنظمة باستخدام Prometheus.
- YouTube: فيديوهات تعليمية من قنوات تقنية متخصصة.
خاتمة
مراقبة أداء السيرفرات باستخدام Nagios وPrometheus تُعتبر من الركائز الأساسية لضمان استقرار وكفاءة بيئة تكنولوجيا المعلومات. بينما يوفر Nagios نظام تنبيهات قوي ومراقبة شاملة، يقدم Prometheus قاعدة بيانات زمنية متقدمة مع قدرات استعلام قوية. اعتمادًا على احتياجاتك ومتطلبات بيئتك، يمكنك اختيار الأداة التي تناسبك أو حتى دمج كلاهما لتحقيق مراقبة متكاملة وفعالة.
من خلال اتباع أفضل الممارسات المذكورة أعلاه، واستخدام الأدوات المساعدة والتكاملات المتاحة، يمكنك بناء نظام مراقبة قوي يساهم في تحسين أداء السيرفرات وتقليل وقت الاستجابة للمشكلات، مما يعزز من كفاءة واستقرار خدماتك.